(Python 3.2):当if语句不满足条件时退出

时间:2020-05-23 00:28:20

标签: python

我是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()语句,但是我意识到该程序不会退出,而是会循环回到第一个要求用户年龄的输入。我该如何做才能使程序终止,从而使未成年玩家无法进步?

谢谢大家!!

5 个答案:

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