简单 Python 临时脚本

Simple Python Temp Script

我写了一个非常简单的临时脚本,它会提示用户输入并给出答案。正如您在下面看到的,我提示用户输入 1,2 或 3。1 是 fah 到 cel,2 是 cel 到 feh,3 退出程序。如果用户输入 1 或 2,另一个提示将要求他们输入他们想要转换的度数。此条目保存在变量中:

scale

我编写的函数应该将浮点数计算为正确的转换,并在打印正确的温度后循环回到主菜单。 try/except 语句中有一些逻辑会尝试将此输入转换为浮点数,如果不能,它将打印一个讨厌的克。当我 运行 这段代码时,一切似乎都工作正常,直到它到达函数调用 fahtoCel:

fc = fahtoCel(scale)

我很确定我的所有缩进都是正确的,并且研​​究了声明函数并在脚本中调用它们。我唯一的怀疑是我的函数调用在我的 try/except 语句中,也许范围不正确?我的代码:

def fahtoCel(number):
    return(number - 32.0) * (5.0/9.0)

while True:
    x = raw_input("""Please enter 1,2 or 3: """)
    if x == "3":
        exit(0)
    if x == "1":
        scale = raw_input("""Enter degrees in Fah: """)
        try:
            scale = float(scale)
            fc = fahtoCel(scale)
        except:
            print("Invalid Entry")
        continue
    print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))
    if x == "2":
    #Do the same for cel to fah#

continue 将执行转移到 while 循环的开头,因此无论 try 语句的结果如何,您永远不会到达 print 语句。您需要进一步缩进:

try:
    scale = float(scale)
    fc = fahtoCel(scale)
except Exception:  # Don't use bare except! You don't want to catch KeyboardInterrupt, for example
    print("Invalid entry")
    continue
print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))

不过,您的 try 陈述确实过于宽泛。您应该担心捕获的唯一例外是 float 可能引发的 ValueError

try:
    scale = float(scale)
except ValueError:
    print("Invalid entry")
    continue
fc = fahtoCel(scale)
print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))