我的第一个问题是我的文件没有被脚本读取,而且我不明白为什么。
第二,问题是我的循环“y”或“Y”没有循环用户的帐户输入问题,它只是继续重复,直到我点击“n”或“N”退出....哪个有效。 (所以我想我的循环在这个意义上是正常的)
我目前的情况 我有一个txt文件,我需要从中读取帐号。 我需要它循环并继续要求验证帐号,即使帐号错误。
我希望输出看起来像这样
------------我需要的输出----------------
>>>
Enter the account number to be validated: 456321
Account number 456321 is not valid.
Enter another card number? Enter Y or N: Y
Enter the account number to be validated: 5552012
Account number 5552012 is valid.
Enter another card number? Enter Y or N: N
>>>
-----------结束需要的输出--------------
-----------我此时的输出---------
>>>
============ RESTART: G:\Software Design\accounts.py ============
Enter the account number to be validated: 4453221
Account number 4453221 is not valid
Enter another card number? Enter Y or N: y
Enter another card number? Enter Y or N: n
>>>
----------结束当前输出-----------
--------我的代码----------
def main():
#setting loop control
another = 'y'
try:
# open file READ ONLY charge_accounts.txt
infile = open('charge_accounts.txt', 'r')
# Setting accountNum variable
accountNum = int(input('Enter the account number to be validated: '))
if accountNum in infile:
accountNum = int(infile.readline(accountNum))
print('Account number ' + str(accountNum) + ' is valid')
else:
print('Account number ' + str(accountNum) + ' is not valid')
# Loop controls for other account inputs
while another == 'y' or another == 'Y':
# Get another account
another = input('Enter another card number? ' + 'Enter Y or N: ')
if another == 'n' or another == 'N':
break
infile.close()
# Extra credit +5 points ( catching errors )
except IOError:
print('An error occured trying to read')
print('the file', charge_accounts.txt)
main()
答案 0 :(得分:2)
关于你的循环,你想要重复的一切都需要在它内部。所以想想你写的是什么,while another == y:
循环体将被重复。所以,我的建议是考虑你开始循环的地方。
此外,accountNum in infile:
始终为false,因为您已将accountNumb
转换为int
,并且需要保留字符串。这是另一个问题:
if accountNum in infile:
accountNum = int(infile.readline(accountNum))
print('Account number ' + str(accountNum) + ' is valid')
无论如何都不会像你认为的那样工作。当您检查某个对象是否在file
对象中时,它会将流位置移动到结尾。这意味着当你readline
它会返回一个空字符串!如果你考虑一下,你真的不需要readline
。