【问题标题】:Python Program not Working, and Python IDLE Doesn't Hi-Light the ErrorsPython 程序不工作,并且 Python IDLE 不会突出显示错误
【发布时间】: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


【解决方案1】:

只需重写你的代码作为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)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多