初学Python代码问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (172)

5.2编写一个程序,重复提示用户输入整数,直到用户输入“完成”。输入“完成”后,打印出最大和最小的数字。如果用户输入除有效数字以外的任何内容,请使用try / except捕获它并输出相应的消息并忽略该数字。输入问题5.1的书中的数字并匹配所需的输出,如图所示。

这是我的代码:

largest = None
smallest = None
while True:
    inp = raw_input("Enter a number: ")
    if inp == "done" : break
    try:
        num = float(inp)
    except:
        print "Invalid input"
    if smallest is None:
        smallest = num
    elif num < smallest:
        smallest = num
    elif num > largest:
        largest = num

    continue

print "Maximum is", largest
print "Minimum is", smallest

******请告诉我这个代码中的逻辑错误*****

提问于
用户回答回答于

答:你永远不会分配最大的无。

B:在float(inp)失败的情况下,你仍然试着继续。你不应该。虽然你可以将那些if / elif语句移动到try块中,但我建议不要这样做,因为你冒着意外捕获不应该删除的东西的风险。相反,使用try / except的被忽略的else块。

在同一行中,除了您想要的错误而不是所有错误之外,这是一个很好的做法。

C:没有必要继续

largest = None
smallest = None
while True:
    inp = raw_input("Enter a number: ")
    if inp == "done" : break
    try:
        num = float(inp)
    except ValueError: #and not all errors!
        print "Invalid input"
    else: 
        # This block will execute if no exception is caught.
        # Yes, this is valid python.
        if smallest is None: #first number!
            smallest = num
            largest = num
        elif num < smallest:
            smallest = num
        elif num > largest:
            largest = num

print "Maximum is", largest
print "Minimum is", smallest
用户回答回答于

编写一个程序,重复提示用户输入整数,直到用户输入“完成”。输入“完成”后,打印出最大和最小的数字。如果用户输入除有效数字以外的任何内容,请使用try / except捕获它并输出相应的消息并忽略该数字。

largest = None
smallest = None

while True:
    inp = raw_input("Enter a number: ")

    if inp == "done":
        break

    try:
        num = int(inp)

        if smallest is None:
            smallest = num
        elif num < smallest:
            smallest = num
        elif num > largest:
           largest = num
    except:
        print "Invalid input"

    continue

print "Maximum is", largest
print "Minimum is", smallest 

如果执行后出现不匹配,则会出错

扫码关注云+社区

领取腾讯云代金券