簡體   English   中英

如何使用條件測試退出while循環?

[英]How to use a conditional test to exit a while loop?

首先介紹一下程序本身:

  • 條件測試開始while循環(我必須使用條件測試來開始和結束循環,沒有標志並且沒有break語句)
  • 詢問用戶年齡(用戶輸入)
  • 根據用戶輸入,它會打印出不同的答案

我的問題是,如果用戶輸入為“ quit”,我希望程序結束。 用戶輸入除“ quit”外始終是一個int,因為該程序會檢查用戶的年齡。

這是我的代碼:

prompt = "\nPlease enter your age to see the price for a ticket. \nEnter 'quit' when done: "

age = ""

while age != "quit":
    age = input(prompt)
    age = int(age)
    if age < 3:
        print("Your ticket is free.")
    elif age > 3 and age < 12:
        print("Ticket is $10")
    else:
        print("Ticket is $15")

這是我輸入“ quit”作為輸入時遇到的錯誤:

Please enter your age to see the price for a ticket.  Enter 'quit' when done: quit 
Traceback (most recent call last):   File "while_loops.py", line 60, in <module>
    age = int(age) ValueError: invalid literal for int() with base 10: 'quit'

在此先感謝您的時間和精力! 最好的問候HWG。

在嘗試轉換為int之前,請檢查quit 在無限循環中運行,並在讀取輸入quit時中斷它。

prompt = "\nPlease enter your age to see the price for a ticket. \nEnter 'quit' when done: "

while True:
    age = input(prompt)
    if age == "quit":
        break
    age = int(age)
    if age < 3:
        print("Your ticket is free.")
    elif age > 3 and age < 12:
        print("Ticket is $10")
    else:
        print("Ticket is $15")

符合附加標准的替代方案

不要使用'break'或變量作為標志

使用異常

while ageStr != "quit":
    ageStr = input(prompt)

    try:
        age = int(ageStr)
        if age < 3:
            print("Your ticket is free.")
        elif age > 3 and age < 12:
            print("Ticket is $10")
        else:
            print("Ticket is $15")
    except ValueError:
        pass

使用繼續。
注意:這很不好,因為您在代碼中指定並兩次檢查“退出”,並且控制流程過於復雜。

prompt = "\nPlease enter your age to see the price for a ticket. \nEnter 'quit' when done: "

age = ""

while age != "quit":
    age = input(prompt)
    if age == "quit":
        continue

    age = int(age)
    if age < 3:
        print("Your ticket is free.")
    elif age > 3 and age < 12:
        print("Ticket is $10")
    else:
        print("Ticket is $15")
while True:
    age = input("\nPlease enter your age to see the price for a ticket. \n Enter 'quit' when done: '"
    if age == 'quit':
        break
    # continue with the rest of your code

只需檢查輸入是否為“退出”,如果是,則跳出無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM