2015-12-15 4 views
-1

Так что я люблю программировать и любить шестнадцатеричные; Я работаю над калькулятором в python, который преобразует шестнадцатеричный в десятичный, делает нужную операцию в десятичной, затем преобразует ответ в шестнадцатеричный. Программа не работает, стандартный идентификатор python (тот, который входит в стандартную комплектацию при установке python) говорит о синтаксической ошибке, но вместо hi-lighting, где ошибка похожа на обычную, он просто говорит «недопустимый синтаксис», когда Я нажимаю клавишу «F5» (которая запускает программу), а затем открывает оболочку. Я ввел программу по строкам в оболочке и находится где-то внутри функции 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

Проблема в том, что ваши элементы dict должны заканчиваться запятыми. Измените 'baseAns == float (baseA) + float (baseB)' на 'baseAns == float (baseA) + float (baseB),' (запомните запятую в конце) ... и т. Д. Для всех элементов в dict , – tdelaney

ответ

0

Просто переписать свой код в качестве примера для Python синтаксиса, это действительно стоит прочитать официальный учебникPython3 или Python2раз.

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 –

Смежные вопросы