Переместить строку linenum = 0
внутри цикла While True:
.
Переменная linenum
должна быть сброшена в 0 (linenum = 0
), когда программа повторно входит в цикл. В противном случае переменная linenum
всегда будет увеличиваться и иметь значение, превышающее num
, и никогда не будет вызывать оператор if для вывода строки с этим номером.
Ваш код с linenum = 0
в цикле:
enterfile = input("Enter the file name: ")
file = open(enterfile, 'r')
linecount = 0
for line in file:
linecount = linecount + 1
print("The number of lines in this txt. file is", linecount)
while True:
linenum = 0
num = int(input("Please enter a line number or press 0 to quit: "))
if num >=1 and num <= linecount:
file = open(enterfile, 'r')
for lines in file:
linenum = linenum + 1
if linenum == num:
print(lines)
else:
if num == 0:
print("Thanks for using the program")
break
Альтернативный метод:
enterfile = input("Enter the file name: ")
with open(enterfile) as f:
lines = [line.rstrip() for line in f]
print("The number of lines in this txt. file is", len(lines))
while True:
num = int(input("Please enter a line number or press 0 to quit: "))
if num > 0 and num < len(lines) + 1:
print(lines[num - 1])
elif num == 0:
print('Thanks for using the program.')
break