iT邦幫忙

0

如何完成這while迴圈

  • 分享至 

  • xImage
  •  

我想要的是可以一直問問題,而且回答年齡小於1就會break,在年齡在6跟12之間再問有沒有父母

在線等...

我目前寫的如下:

age=int(input("請輸人你的年紀:"))

while True:

    if age >=6 and age <=12:
            with_parent = input("和父母一起來嗎?(Y/N)")
            if (age >= 6 and age <= 12) and (with_parent == 'Y' or with_parent == 'y'):
                    print("可以看保護級電影")
                    age = int(input("請輸人你的年紀:"))
    if age>=18:
            print("可以看限制級電影")

    elif age >12:
            print("可以看輔導級電影")
    else:
            print("只能看普通級電影")

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
featherm
iT邦新手 5 級 ‧ 2022-05-23 10:06:52
age=int(input("請輸人你的年紀:"))

while True:
    if age>=18:
            print("可以看限制級電影")
    elif age >12:
            print("可以看輔導級電影")
    elif age >=6 :
            with_parent = input("和父母一起來嗎?(Y/N)")
            if (with_parent == 'Y' or with_parent == 'y'):
                    print("可以看保護級電影")
            else:
                    print("只能看普通級電影")
    elif age > 0:
            print("只能看普通級電影")
    else:
      break;
    age = int(input("請輸人你的年紀:"))

  1. 像這種if的一連串條件有順序/漸進的狀況最好是照順序排 比較好閱讀 而且前面的選項也會幫你做一次篩選 這樣"age >=6 and age <=12"這種條件就只要寫"age >=6"就好
  2. 回答年齡小於1就會break<就照個需求放個break就好了
  3. 迴圈判定條件的變化看你的寫法通常放在迴圈最後或開頭 這樣只要寫一次 如果照你原本的寫法
if age >=6 and age <=12:
            with_parent = input("和父母一起來嗎?(Y/N)")
            if (age >= 6 and age <= 12) and (with_parent == 'Y' or with_parent == 'y'):
                    print("可以看保護級電影")
                    age = int(input("請輸人你的年紀:"))

那你其他選項也要加上age = int(input("請輸人你的年紀:"))才行 啊不然其他選項做完了不會等待輸入啊
4.你6~12的if內 外層已經判定過一次6~12 內層就不用再寫一次 沒有意義 而且你還少了父母不在的回饋
另外輔導級應該是含12 你自己看條件有沒有需要改>=12

我要留言

立即登入留言