我想制作一个程序来跟踪我有多少个苹果,并在我吃一个苹果时拿走一个苹果。
apples=3
while apples>0:
try:
print("You have {} a left".format(apples))
Action=input('Action:')
if action == "eat":
apples=apples-1
else:
print("invalid")
except:
pass
但是,当我将 eat 作为用户输入写入时,此代码不会更新苹果。
You have 3 apples left
Action:eat
You have 3 apples left
Action:eat
You have 3 apples left
Action:eat
You have 3 apples left
Action:eat
You have 3 apples left
问题是您定义了 Action
但尝试使用 action
(大小写很重要!)。如果没有 try
和 except
,您可能已经注意到了这一点。这就是您(几乎)永远不要使用裸露的 except
的原因之一。始终捕获特定异常,例如 ValueError 等。
如果我删除这些并使用此代码,则会显示异常:
apples=3
while apples>0:
print("You have {} a left".format(apples))
Action=input('Action:')
if action == "eat":
apples=apples-1
else:
print("invalid")
# ...
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
4 print("You have {} a left".format(apples))
5 Action=input('Action:')
----> 6 if action == "eat":
7 apples=apples-1
8 else:
NameError: name 'action' is not defined
您可能还需要剥离
输入
,因为它有时包含尾随换行符:
apples=3
while apples > 0:
print("You have {} apples left".format(apples))
action=input('Action:')
if action.strip() == "eat": # here is the strip that removes all leading and trailing whitespaces
apples=apples-1
else:
print("invalid")
我是一名优秀的程序员,十分优秀!