亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么即使我已經滿足了條件,我也會陷入循環?

為什么即使我已經滿足了條件,我也會陷入循環?

qq_遁去的一_1 2023-02-07 17:31:02
即使我已經輸入了 -100 到 100 之間的分數,我仍然卡住了。為什么會這樣?請幫我修一下!players = int(input("Enter number of players: ")) while (players < 2 or players > 10): #Limits number of players to 2-10 only    players = int(input("Error. Players should be 2-10 only. Enter number of players: "))scores = input("Enter scores separated by space: ") data = list(map(int, scores.split())) record = data[slice(players)] for x in record:    while( x < -100 or x > 100):         scores = input("Error. Scores should be -100 to 100 only. Please enter scores again separated by space: ")         data = list(map(int, scores.split()))         record = data[slice(players)] record.sort(reverse= True) values = [] for x in record:    if x not in values:         values.append( x )        if len(values) == 3:             breakprint ("The runner-up score is:",values[1]) 這是發生了什么:Enter number of players: 3Enter scores separated by space: 10000 2 3Error. Scores should be -100 to 100 only. Please enter scores again separated by space: 233 4 5Error. Scores should be -100 to 100 only. Please enter scores again separated by space: 1 2 3Error. Scores should be -100 to 100 only. Please enter scores again separated by space:          可以看到,第三次我已經輸入了1 2 3,但是還是報錯。請幫助我:(非常感謝您的幫助!
查看完整描述

2 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

更改此部分:


for x in record:

    while( x < -100 or x > 100): 

        scores = input("Error. Scores should be -100 to 100 only. Please enter scores again separated by space: ") 

        data = list(map(int, scores.split())) 

        record = data[slice(players)] 

到:


while any( x < -100 or x > 100 for x in record):

        scores = input("Error. Scores should be -100 to 100 only. Please enter scores again separated by space: ") 

        data = list(map(int, scores.split())) 

        record = data[slice(players)] 

您的代碼不起作用的原因是:


for x in record:

    while( x < -100 or x > 100): 

您正在循環使用那個特定的x. 更新時record,具體x內容將保持不變,因此while循環永遠不會中斷。


查看完整回答
反對 回復 2023-02-07
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

這是根據您的目的編寫代碼的正確方法:


players = int(input("Enter number of players: ")) 


while (players < 2 or players > 10):

    players = int(input("Error. Players should be 2-10 only. Enter number of players: "))

    continue

現在它會不停地問你,直到玩家人數為 2 - 10。


并更改以下代碼:


while any(x < -100 or x > 100 for x in record):

    scores = input("Error. Scores should be -100 to 100 only. Please enter scores again separated by space: ") 

    data = list(map(int, scores.split())) 

    record = data[slice(players)] 

現在應該工作


查看完整回答
反對 回復 2023-02-07
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號