繁体   English   中英

While循环中断用法

[英]While Loop Break usage

我对我编写的这个函数完全发疯了,而while循环对于上帝的爱是行不通的

        while (something something):
            print("at anytime enter 0 for both origin and destination to exit the game")
            o=input("Enter origin stool's index (Must be int) ")
            d=input("Enter destination stool's index (Must be int) ")
            if isinstance(o,int) and isinstance(d,int):#if input d,o are int
               #do bla bla
            elif o==0 and d==0:#to exit manually
               print("Exiting Manually...")
               break
            elif not (isinstance(o,int) and isinstance(d,int)):
               print ("Invalid entry, exiting...")
               break 

o AND d为0时,代码应该退出,而当o OR d不是int时,代码也应该退出。

但是似乎输入什么都没关系,(我尝试输入0,0和0,1)返回invalid entry, exiting...

条件怎么了?

在Python 3中, input函数始终返回一个字符串。 它不像在Python 2中那样eval用户输入。因此, od都是字符串,而不是整数。 您需要将input调用包装为int(input('...'))才能将它们转换为int,因此您的条件条件有机会获得成功。

在这种情况下,如果用户输入的值不是数字,则int调用将失败并显示ValueError 解决此问题的标准方法是使用try except块包装对用户输入的所有调用,以处理提供错误输入的用户。 因此,代码的相关部分可能看起来像这样:

try:
    o=int(input("Enter origin stool's index (Must be int) "))
    d=int(input("Enter destination stool's index (Must be int) "))
except ValueError:
    print("Invalid entry, exiting...")
    break

附带说明一下,您在条件句中的逻辑有点奇怪/不完整。 您的第一个条件检查ad是否均为int,然后进行处理。 然后,您的下一个条件(第一个elif块)尝试将它们与0进行比较,这将始终失败,因为如果您进行该测试,则意味着第一个条件失败了,因此它们不是两个整数,因此永远不能等于0

当o和d均为整数时,无论它们的值如何,您的第一个“ if”都会过去。 仅当该条件失败时,它才会继续到下一个“ elif”。

尝试更多类似的方法:

if isinstance(o,int) and isinstance(d,int) and (o != 0 or d != 0):
   #Conditions met, carry on
else:
   break

暂无
暂无

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

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