【发布时间】:2015-10-20 05:14:21
【问题描述】:
我想让程序检查代码是否是“w”、“W”、“d”或“D”,然后从那里引导用户,但事实上,它总是无效() 即使输入是“w”、“W”、“d”或“D”。而且我不想使用'while code is equal to 'w', 'W', 'd' or 'D' continue on',因为即使在程序运行时有效,它也会导致程序重新开始完成后从头开始。
另外,我不允许使用 if 语句做简单的方法
if code == 'W' or code == 'w' or code == 'D' or code == 'd':
prevbalance = float(input('Enter your previous balance: $'))
else:
invalid()
这里是问题区域:
code = input('Enter your transaction code: ')
while not code == 'W' or code == 'w' or code == 'D' or code == 'd':
invalid()
prevbalance = float(input('Enter your previous balance: $'))
如果有帮助,这里是整个程序:
def invalid():
input('Invalid transaction code. Please select another code.')
main()
def deposit(prevbalance, amount, code):
Wbalance = ''
Dbalance = prevbalance + amount
balance(Wbalance, Dbalance, code)
def withdrawal(prevbalance, amount, code):
Dbalance = ''
Wbalance = prevbalance - amount
if amount > prevbalance:
print('~~ERROR~~ You cannot withdrawal more than you have')
input(' Please try a lower amount back at the main menu')
main()
else:
balance(Wbalance, Dbalance, code)
def balance(Wbalance, Dbalance, code):
if code == "W" or code == "w":
print('Your new balance is: $',format(Wbalance, ',.2f'),)
else:
print('Your new balance is: $',format(Dbalance, ',.2f'),)
def main():
name = input('Enter your name: ')
ID = input('Enter your account ID: ')
code = input('Enter your transaction code: ')
while not code == 'W' or code == 'w' or code == 'D' or code == 'd':
invalid()
prevbalance = float(input('Enter your previous balance: $'))
amount = float(input('Enter your transaction amount: $'))
if code == "W" or code == "w":
withdrawal(prevbalance, amount, code)
elif code == "D" or code == "d":
deposit(prevbalance, amount, code)
main()
input('Press ENTER to continue...')
【问题讨论】:
-
Invalid函数应该将控制权返回给调用点,而不是调用main()。 -
while code.lower().strip() not in 'wd'? -
查看此线程中的解决方案。 stackoverflow.com/questions/21122540/…
input关键字可能不是你想的那样
标签: python while-loop