根据列表Python 3.x检查用户输入

时间:2015-11-05 00:40:10

标签: list file validation python-3.x input

我必须从文本文件中取出数字,将它们放在一个列表中,然后向用户询问一个数字并告诉他们是否在列表中。

这就是我所拥有的:

#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循环,但我不知道要修复的内容。

1 个答案:

答案 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