我是Python的新手。我正在编写一个程序,最初要求用户提供信息(姓名,年龄等),并且试图弄清楚如果用户的年龄在7岁以下,如何解决该问题。这是到目前为止的代码。>
def age_func():
while True:
try:
age = int(input('How old are you? '))
if age > 7:
print(f'OK! You are {age} years old')
elif age < 7:
print("Too young for this game. Come back in a few years.")
break
except:
print("Please enter a number")
起初,我尝试在打印后的elif语句之后添加一个exit()
语句,但是我意识到该程序不会退出,而是会循环回到第一个要求用户年龄的输入。我该如何做才能使程序终止,从而使未成年玩家无法进步?
谢谢大家!!
答案 0 :(得分:1)
您提供的代码在执行此操作时效果很好:
def age_func():
while True:
try:
age = int(input('How old are you? '))
if age > 7:
print(f'OK! You are {age} years old')
elif age < 7:
print("Too young for this game. Come back in a few years.")
break
except:
print("Please enter a number")
age_func()
但是,如果将函数调用放在循环中,
while True:
age_func()
它不起作用。我猜就是这样。您可以使用sys.exit()
来解决:
import sys
def age_func():
while True:
try:
age = int(input('How old are you? '))
if age > 7:
print(f'OK! You are {age} years old')
elif age < 7:
print("Too young for this game. Come back in a few years.")
sys.exit() #replaced break with sys.exit()
except:
print("Please enter a number")
while True:
age_func()
答案 1 :(得分:0)
try... except
正在捕获exit()
引发的异常。
一个更好的解决方案是不使用全部捕获的except
,而是使用except ValueError
,它只会捕获特定的错误。
答案 2 :(得分:0)
请阅读整个帖子:)
杀死程序的解决方案是使用'sys.exit()'。因此,您可以这样做:
import sys
def age_func():
while True:
try:
age = int(input('How old are you? '))
if age > 7:
print(f'OK! You are {age} years old')
elif age < 7:
print("Too young for this game. Come back in a few years.")
sys.exit() #replaced break with sys.exit()
except:
print("Please enter a number")
age_func()
不幸的是,由于您的try语句,这仍然不起作用。退出被视为错误,因此,当您尝试运行'sys.exit()'时,即使您键入是,它也会发送“请输入数字”。这就是为什么指定异常类型很重要的原因,例如:
import sys
def age_func():
while True:
try:
age = int(input('How old are you? '))
if age > 7:
print(f'OK! You are {age} years old')
elif age < 7:
print("Too young for this game. Come back in a few years.")
sys.exit() #replaced break with sys.exit()
except ValueError: #Now it will only except if what you typed wasn't a number, so it will exit properly.
print("Please enter a number")
age_func()
希望这会有所帮助
答案 3 :(得分:0)
不需要理解elif语句,因为它可以理解,如果if age>7
为false,则表示年龄总是小于7或7。
def age_func():
while True:
age = int(input('How old are you? '))
if age > 7:
print(f'OK! You are {age} years old')
else:
print("Too young for this game. Come back in a few years.")
break
答案 4 :(得分:0)
import sys
def age_func():
while True:
try:
age = int(input('How old are you? '))
if age > 7:
print('OK! You are {age} years old')
elif age < 7:
print("Too young for this game. Come back in a few years.")
sys.exit()
except ValueError:
print("Please enter a number")
age_func()