【发布时间】:2015-12-15 05:04:08
【问题描述】:
所以我喜欢编程,喜欢十六进制;我正在使用 python 中的计算器将十六进制转换为十进制,以十进制执行所需的操作,然后将答案转换为十六进制。该程序不工作,标准的python IDLE(安装python时标准的那个)说有一个语法错误,但不是像正常的错误一样高亮,它只是说“无效的语法”当我按下“F5”键(运行程序),然后打开外壳。我在 shell 中逐行输入程序,并在 def ansDef(oper): 函数内的某个地方。
代码如下:
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()参数的一部分。错了。 -
解决该问题后,您必须实际调用该函数,而不是假设它是自动调用的,然后尝试引用其局部变量。我想说它回到了绘图板(或official Python tutorial)。
-
问题是您的 dict 项目需要以逗号结尾。将字典中的所有项目的
baseAns == float(baseA) + float(baseB)更改为baseAns == float(baseA) + float(baseB),(注意逗号末尾)......等等。
标签: python hex calculator