我使用的是dictionary
作爲替代的if/elif
結構,看起來像這樣:Python的訪問錯誤的關鍵
newValue = {
'int': param.value + (random.choice((-1, 1)) *
random.randint(1, param.maxChange)),
'float': param.value + random.uniform(-param.maxChange,
param.maxChange),
'bool': not param.value
}[param.dataType]
但當param.dataType
是'float'
,它獲得了'int'
值。如果我使用if/elif
結構,它按預期工作。
if param.dataType == 'int':
newValue = param.value + (random.choice((-1, 1)) *
random.randint(1, param.maxChange))
elif param.dataType == 'float':
newValue = param.value + random.uniform(-param.maxChange,
param.maxChange)
elif param.dataType == 'bool':
newValue = not param.value
字典格式有什麼問題?我正在使用Python 2.7
編輯:這並不是說它訪問了錯誤的鍵。我得到一個屬於'int'代碼塊的異常,所以我認爲它試圖將'int'的值賦給newValue。
你有沒有嘗試把浮選擇之前的int選擇? – wogsland
您能否提供一個顯示問題的工作示例。您顯示的代碼不包括param.dataType的創建/初始化。 – Jonathan
特別是,print repr(param.dataType),type(param.dataType)''的輸出是什麼? – 9000