我必须从文本文件中取出数字,将它们放在一个列表中,然后向用户询问一个数字并告诉他们是否在列表中。
这就是我所拥有的:
#read numbers to list
infile = open('charge_accounts.txt','r')
lines = infile.read().strip()
list1 = [lines]
infile.close()
#ask user for #
inp = str(input('Enter an account number: '))
#determine if input is in list
#display invalid/valid
if inp in list1:
print('valid number')
else:
while inp not in list1:
print('invalid entry')
inp = input('try another number: ')
if inp in list1:
print('valid number')
break
问题是它认为所有输入都是无效的。我假设我要么将文件转换为列表或使用while循环,但我不知道要修复的内容。
答案 0 :(得分:0)
您的列表中只包含一个字符串,即整个文件的内容。
如果您的数字都在一个单独的行上,您需要使用迭代读取文件(给您单独的行)并分别剥离每一行。最好用list comprehension:
完成with open('charge_accounts.txt') as infile:
numbers = [num.strip() for num in infile]
请注意,我使用with
语句打开文件,这可确保在块完成时文件再次自动关闭。
您可能希望研究有关如何编写循环以询问数字的规范Asking the user for input until they give a valid response问题。根据您的情况调整该帖子,并假设您仍然希望将输入处理为字符串而不是整数:
with open('charge_accounts.txt') as infile:
numbers = [num.strip() for num in infile]
while True:
account_number = input('Enter an account number: ')
if account_number not in numbers:
print('Invalid entry, please try again')
else:
break