TypeError: unsupported operand type(s) for /: 'str'和'float'
我正在制作一個足球游戲,每當我試圖運行下面的代碼來確定一個游戲將走多遠時,我就會遇到這個問題。
playdistance = round(random.uniform(float(rbs.get(possession)[-2:]/float(30.0))-2.5,float(rbs.get(possession)[-2:]/float(30.0)) 5.5))
"rbs "是一個包含所有球隊的跑衛的字典,整體存盤為'NYG':'Saquon Barkley 99',它包含名字,然后是該球員在0-99分之間的優秀程度。我是這樣存盤的,這樣我就可以用[-2:]來獲得該球員的優秀程度,用[:-2]來獲得該球員的名字。
"占有 "是指擁有球權的球隊,這樣我就可以從之前提到的字典中提取跑衛的名字和技能。
我感到困惑的是,當除法中的兩個引數都是浮點,而都不是字串時,我怎么會得到前面提到的錯誤。我已經嘗試將 30 的除數轉換為字串、浮點數,而且我也對第一個引數進行了轉換。
我相信這是一個非常愚蠢的問題,因為我對編碼和python非常陌生,但如果有人能幫助我,那將是非常棒的。
uj5u.com熱心網友回復:
當我縮進你的代碼以使其更具可讀性時,問題就變得很明顯了
playdistance = round(
隨機.統一(
float(
rbs.get( possession)[-2:] / float(30.0) # error 1)
) - 2.5, float(
rbs.get(poss)[-2:] / float(30.0) # error 2)
) 5.5 #錯誤2 )
)
)
rbs.get( possession)[-2:]是一個字串。我看到你正在嘗試將其轉換為一個浮點數,但這需要用
float(rbs.get( possession)[-2:] ) / float(30.0) - 2.5)
# ^
不
float(rbs. get( possession)[-2:] / float(30.0) - 2.5)
# ^
不需要用括號來表示除法,因為/的優先級比-高(記住你的運算順序)
uj5u.com熱心網友回復:
在Python中你不能像這樣把字串和數字結合起來。
rbs.get(poss)[-2:]給你一個字串,例如:'99',而float(30.0)給你一個數字。字串與數字的除法沒有定義。
你必須先將'99'轉換為一個數字,然后才能將其除以任何東西。從技術上講,你只需要在你的運算式中轉換括號即可。
破譯:
round(random.uniform(float(rbs. get( possession)[-2:]/float(30. 0))-2.5,float(rbs. get( possession)[-2:]/float(30.0) 5.5)
作業原理:
round(random.uniform(float(rbs. get( possession)[-2:])/float(30. 0)-2.5,float(rbs. get( possession)[-2:])/float(30.0) 5.5)
但實際上,使用變數。上面的東西都是看不懂的。
player_rating = float(rbs.get( possession)[-2:] )
low = player_rating / 30 - 2.5
high = player_rating / 30 5.5
playdistance = round(random.uniform(low, high))
另外,一旦計算中的一個變數是浮點數,例如這里的player_rating,整個計算將產生一個浮點數。像float(30.0)這樣的東西是完全沒有必要的。
uj5u.com熱心網友回復:
這就解決了你的問題,你需要在除法之前轉換為float
import numpy
rbs={'NYG':'Saquon Barkley 99'。
}
playdistance = float(round(numpy.random.uniform(float(rbs. get( possession)[-2:])/float(30. 0)-2.5,float(rbs. get( possession)[-2:])/float(30.0)) 5.5)
print(playdistance)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324434.html
標籤:
