簡體   English   中英

Function 認為 int 是一個列表

[英]Function thinks an int is a list

我定義了一個使用列表長度作為輸入的 function。 它看起來像這樣:

lhand = len(hand)
def roll(lhand):
    global hand
    ndice = 5 - sum(lhand)
    for i in range(ndice):
        newhand = random.randint(1, 6)
        hand = hand.append(newhand)
    return hand

現在,由於某種原因,我收到一條錯誤消息,指出列表和字符串之間不允許使用運算符 - 。 這讓我很困惑,因為我知道 lhand 應該是一個 int。 我試圖通過將 int() 放在很多地方來解決它,但我仍然遇到同樣的錯誤。 即使我將 function 中的 lhand 更改為一個數字,我仍然遇到同樣的錯誤。 我如何解決這個問題(我認為)是在 function 中使用 sum(lhand)。 這似乎有效,因為它不再給我一個錯誤。 我仍然想知道為什么會出現該錯誤,或者我的代碼中可能有其他問題導致它失敗。

謝謝

您的問題可能出在這一行 - ndice = 5 - sum(lhand) 你的手是一個數字,你不能在lhand上使用sum
您還應該避免使用global ,它總是錯誤的。

除了 BoobyTrap 關於避免使用global的評論之外,我建議修復此代碼的方法如下:將hand作為參數而不是lhand

def roll(hand):
    ndice = 5 - len(hand)
    for i in range(ndice):
        hand.append(random.randint(1, 6))
    return hand

請注意,當您調用hand.append()時, append方法會修改hand但返回None ,因此您不想將hand重新分配給它的結果。

暫無
暫無

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

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