繁体   English   中英

如何在 Python 中使用不同的格式条件退出 while True 循环?

[英]How to exit a while True loop using a different format condition in Python?

我在网上找到了以下代码示例,它通过使用特定的 integer 退出了while True循环:

while True:
i = int(input('Please enter an integer (or 0 to exit):\n'))
if i == 0:
    print("Exiting the Program")
    break
print(f'{i} square is {i ** 2}')

我想知道如何使用str输入(如“exit”)而不是特定的 int(本例中为 0)退出循环。 我通过为每种类型创建一个输入来解决问题:

while True:
    i_str = input('Please enter an integer ( or "exit" to exit): ')
    if i_str == "exit":
        print("Exiting the Program")
        break
    i_int = int(input('Please enter an integer (or "exit" to exit): '))
    print(f'{i_int} square is {i_int ** 2}')

...但是每隔一次尝试就会打印出 smth,并在错误尝试计算“退出”时抛出 ValueError 。

我基本上无法弄清楚如何正确实现这一点,我也不确定我什至应该使用两种不同的输入格式来解决这个问题。

如果不exit ,则可以使用if-else并转换为int

while True:
    i_str = input('Please enter an integer ( or "exit" to exit): ')
    if i_str == "exit":
        print("Exiting the Program")
        break
    else:
        i_int = int(i_str)
        print(f'{i_int} square is {i_int ** 2}')

您可以先将其转换为字符串并对其进行验证,然后将其转换为 int,然后将其全部放入 try-catch 以捕获任何异常,您可以使用下面的示例

while True:
try:
    i = str(input('Please enter an integer (or 0 to exit):\n'))
    if "exit" in i:
        print("Exiting the Program")
        break
    else:
        i = int(i)
    if i == 0:
        print("Exiting the Program")
        break
    print(f'{i} square is {i ** 2}')
except:
    print("Exiting the Program")

您可以只使用try-except ,如果程序无法将输入的数字转换为 integer,则会引发异常。

while True:
    try:
        i = int(input('Please enter an integer ( or "exit" to exit): '))
        print(f'{i} square is {i ** 2}')
    except:
        print("Exiting the Program")
        break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM