簡體   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