所以我喜歡編程,並喜歡十六進制;我正在使用python中的計算器將十六進制數轉換爲十進制數,然後以十進制數進行所需的操作,然後將答案轉換爲十六進制數。該程序無法正常工作,標準的Python IDLE(安裝Python時標準的IDLE)表示存在語法錯誤,但是在錯誤與正常情況類似的情況下,它只是說「無效語法」時我按下「F5」鍵(運行程序),然後打開外殼。我在shell中逐行輸入程序,並且在def ansDef(oper):
函數內部。 下面是代碼:Python程序不能正常工作,而Python IDLE不會高亮顯示錯誤
print("Valid operations: +, -, *, /, ^, rt")
numA = input("Enter first number: ")
oper = input("Enter operation: ")
numB = input("Enter second number: ")
baseA = int(numA, 16)
baseB = int(numB, 16)
numBRT = float(1)/float(baseNumB)
def ansDef(oper):
return{
"+":
baseAns == float(baseA) + float(baseB)
"-":
baseAns == float(baseA) - float(baseB)
"*":
baseAns == float(baseA) * float(baseB)
"/":
baseAns == float(baseA)/float(baseB)
"^":
baseAns == float(baseA) ** float(baseB)
"rt":
baseAns == float(baseA) ** float(numBRT)
}.get(oper, return{
print("ERROR: INVALID OPERATION")
})
ans = hex(baseAns)
print(ans)
你有'return'語句作爲'dict.get()'的參數的一部分。這是錯誤的。 – TigerhawkT3
解決該問題後,您必須實際調用該函數,而不是假定它被自動調用,然後嘗試引用其局部變量。我會說這是回到繪圖板(或[官方Python教程](https://docs.python.org/3.4/tutorial/index.html))。 – TigerhawkT3
問題是你的字典項目需要用逗號結尾。將'baseAns == float(baseA)+ float(baseB)'改爲'baseAns == float(baseA)+ float(baseB),'(注意逗號結尾)...等等,以表示dict中的所有項目。 – tdelaney