Проблема здесь:
fortunes = fortunes_file.readline()
...
fortunes = fortunes_file.readline()
Вы просто повторно определили переменную, так что после этого конца while
петли , fortunes
На самом деле это последняя строка в вашем файле.
Вы можете просто использовать io.IOBase.readlines()
для чтения файла в списке строку за строкой, и использовать random.choice()
выбрать элемент в списке случайным образом. Вам не нужен счетчик, и нарежьте список.
Например:
import random
# use `with` is recommended here since you don't need close the file manually
with open("fortunes.txt", "r") as f:
fortunes = fortunes_file.readlinse()
print random.choice(fortunes)
Однако, если вы хотите знать, как исправить код, просто положить выход io.IOBase.readline()
в список, как показано ниже:
import random
fortunes_file = open("fortunes.txt", "r")
fortunes = []
fortunes.append(fortunes_file.readline())
count = 0
while fortunes != "":
count += 1
fortunes.append(fortunes_file.readline())
rand_line = random.randint(1, count)
print fortunes[rand_line]
fortunes_file.close()
Обратите внимание, что если вы не хотите использовать .readlines()
и random.choice()
, вам все равно не нужен этот счетчик, вы также можете использовать len(fortunes)
, чтобы получить длину своего списка вместо . Напишите бесполезный счетчик.
Спасибо - это решение работает для меня! –