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

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

函數僅返回列表的第一個輸入,并且在輸入超出范圍時不繼續

函數僅返回列表的第一個輸入,并且在輸入超出范圍時不繼續

烙印99 2024-01-27 14:51:47
我對編碼真的很陌生(大約 3 周后),我正在編寫一個代碼,要求用戶輸入 0 到 100 之間的數字,然后將該數字添加到列表中。一旦列表的長度達到 10 個數字,它就會打印該列表。我正在使用一個函數來實現這一點。我可以得到它,以便它打印一個列表,但它只打印輸入的第一個數字。例如,如果我輸入 5,它仍然會要求其他數字,但會將列表打印為 [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]。另外,如果我輸入 0-100 范圍之外的數字,它確實會要求您輸入不同的數字,但隨后它會停止并將列表打印為“無”。下面是我的代碼:def getUser(n):    mylist = []    while 0 < n < 100:        mylist.append(n)        int(input("Please enter a number between 0 and 100: "))        if len(mylist) == 10:            return(mylist)    else:        int(input("This number is not in the range of 0-100, please input a different number: "))        n = int(input("Please enter a number between 0 and 100: "))print("The numbers you have entered are: ", getUser(n))我猜它與 while/else 循環有關,但正如我所說,我對此很陌生,這一切都讓人感到不知所措,試圖用谷歌搜索這似乎會帶來我不明白的超級復雜的事情! !謝謝
查看完整描述

4 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

第一:為什么你得到 [5, 5, 5, 5, 5, 5, 5, 5, 5, 5] :


int(input("Please enter a number between 0 and 100: "))

你應該先把這個給 n :


n=int(input("Please enter a number between 0 and 100: "))

然后,它退出循環,因為您進入了else,然后您不再返回while。然后你的函數結束了,沒有return,所以none


老實說,我不明白為什么while如果你給出的數字超出范圍,你的代碼就會跳出循環,因為該值沒有給n。如果有人可以在評論中解釋,那就太好了!


我會這樣做:


def getUser():

    mylist = []

    while len(mylist) < 10:

        n = int(input("Please enter a number between 0 and 100: "))

        

        if (0 < n < 100):

            mylist.append(n)

        else:

            print('This is not between 0 and 100 !')


    return mylist

    

    

print("The numbers you have entered are: ", getUser())

然后系統會詢問您從 0 到 100(不含)的數字,直到您得到 10 的尺寸。


查看完整回答
反對 回復 2024-01-27
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

好的,您正在嘗試使用while而不是if. 這就是我要做的 - 我很快就會解釋:


def get_user():

    mylist = []

    for i in range(5):

        n = int(input("Please enter a number between 0 and 100: "))

        if n <= 100 and 0 <= n:

            mylist.append(n)

            

        else:

            print("This is not between 0 and 100 !")

            i = i - 1


    return mylist

瀏覽代碼

for i in range(5)


這里我們使用for來迭代range 數字 (0 - 5)。for將分配i給范圍內的最小數字,并在i每次迭代中不斷加 1,直到 i超出范圍range。請參閱此了解更多信息range


if n <= 100 and 0 <= n:


這里and檢查2 個表達式是否為真。在這種情況下,如果 n 小于或等于百且大于或等于 0。您可以使用任意and次數,如下所示:


if 1 < 100 and 100 > 200 and 20 < 40:

   print("foo!")

現在看看else:


else:

    i = i - 1

在這里,我們減去 1,i從而將我們的進度減少 1。另請注意,我的函數被調用get_user()而不是getUser(). 在Python中,我們使用蛇形命名法而不是駝峰命名法。


我希望這個答案有幫助。我在回答中給出了一些小提示。你應該用谷歌搜索他們!我也不會直接給你邏輯。試著弄清楚吧!這樣你就能很好地理解我所做的事情。


查看完整回答
反對 回復 2024-01-27
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

def getUser(n):

mylist = []

t = True

while t:

    n =int(input("Please enter a number between 0 and 100: "))

    if n >0 and n<=100:

        mylist.append(n)

    if len(mylist) == 10:

        return(mylist)

        t = False

    elif n < 0  or n >100:

        print('This number is not in the range of 0-100, please input a different number:')

    

        



查看完整回答
反對 回復 2024-01-27
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

所以這就是你做錯了什么


def getUser(n):

    mylist = []

    while 0 < n < 100:

        mylist.append(n)

        n = int(input("Please enter a number between 0 and 100: "))

        if len(mylist) == 10:

            return(mylist)

    else:

        int(input("This number is not in the range of 0-100, please input a different number: "))

    

    

n = int(input("Please enter a number between 0 and 100: "))

print("The numbers you have entered are: ", getUser(n))

您注意到編輯后的代碼有什么不同嗎?


您從未重新分配變量的值n ,因此您只需添加getUser每次傳遞給的任何值(并且每次都是相同的值)


如果您遇到困難,不要害怕尋求幫助!


PS 如果您能夠應對挑戰,您也可以將一條線從某個地方移動到其他地方,以使其表現得更好一點;)


查看完整回答
反對 回復 2024-01-27
  • 4 回答
  • 0 關注
  • 349 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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