2015-12-15 38 views
-1

所以我喜歡編程,並喜歡十六進制;我正在使用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) 
+0

你有'return'語句作爲'dict.get()'的參數的一部分。這是錯誤的。 – TigerhawkT3

+0

解決該問題後,您必須實際調用該函數,而不是假定它被自動調用,然後嘗試引用其局部變量。我會說這是回到繪圖板(或[官方Python教程](https://docs.python.org/3.4/tutorial/index.html))。 – TigerhawkT3

+0

問題是你的字典項目需要用逗號結尾。將'baseAns == float(baseA)+ float(baseB)'改爲'baseAns == float(baseA)+ float(baseB),'(注意逗號結尾)...等等,以表示dict中的所有項目。 – tdelaney

回答

0

只需重寫你的代碼作爲一個例子Python語法,實在是值得閱讀Python3Python2官方教程一次。

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) 

def ansDef(oper, a, b): 
    if oper == "+": 
     return a + b 
    elif oper == "-": 
     return a - b 
    elif oper == "*": 
     return a * b 
    elif oper == "/": 
     return a/b 
    elif oper == "^": 
     return a ** b 
    elif oper == "rt": 
     return a ** 1.0/b 
    else: 
     raise Exception("ERROR: INVALID OPERATION") 

try: 
    baseAns = ansDef(oper, float(baseA), float(baseB)) 
    ans = hex(int(baseAns)) 
    print(ans) 
except Exception as e: 
    print(e) 
+0

感謝您的回覆,但我不會使用您的建議。我討厭異常,並發現他們煩人。下面是最終程序的github鏈接:https://github.com/5b-name-5d/Python-Programs/blob/Hexadecimal-Calculator/HexCalculator.py –