从输入中获取最小值和最大值

时间:2020-07-01 18:11:10

标签: python debugging variable-assignment new-operator coursera-api

Coursera python assignment

我不理解这段代码有什么问题。它适用于最大而不是最小的。而且这两行代码是相同的! 我是这里的新手,也是编程的新手,请原谅我的经验。请注意,我需要使用这些方法来解决此问题,因为这是本课程的本章。再次抱歉

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if (num=="done"): 
        break
    else:
        try:
            num=int(num)
        except:
            print("Invalid input") 
            continue
    if(num < smallest):
        smallest = num
    elif(num > largest):
        largest = num
print("Maximum is", largest)
print("Minimum is", smallest)

3 个答案:

答案 0 :(得分:0)

您不应将smallestlargest设置为None,因为您无法将其与数字进行比较。

相反,您应该将它们都设置为第一个输入。然后,您可以将其他数字与其进行比较。而且,如果只输入一个数字,它将是最大和最小。

我已经将数字读入函数中,以避免在两个地方都重复验证循环。

def get_number():
    while True:
        num = input("Enter a number: ")
        if num == "done":
            return num
        try:
            num = int(num)
            return num
        except:
            print("Invalid input")

smallest = get_number()
largest = smallest
if smallest == "done":
    print("At least one number must be entered")
else:
    while True:
        num = get_number()
        if num == "done":
            break
        if num < smallest:
            smallest = num
        elif num > largest:
            largest = num
    print("Maximum = ", largest)
    print("Minimum = ", smallest)

测试结果:

$ python testminmax.py
Enter a number: 7
Enter a number: 2
Enter a number: bob
Invalid input
Enter a number: 10
Enter a number: 4
Enter a number: done
Maximum =  10
Minimum =  2

答案 1 :(得分:0)

此问题主要需要执行do-while循环,但由于python没有do-while循环,因此您可以按以下方式进行反击:

largest = None
smallest = None

first_time = True
while True:
    num = input("Enter a number:")

    if num=="done" :
        break
    else:
        try:
            num = int(num)
        except:
            print("Invalid input")
            continue
        if first_time :
            largest = smallest = num
            first_time = False
        else:
            if num < smallest :
                smallest = num
            elif num > largest :
                largest = num

print("Max : ", largest)
print("Min : ", smallest)

第一次输入数字时,将检查它是否为数字,然后将其分配给最小号和最大号。第一次之后,用户可以输入数字,它可以正常工作。 希望能有所帮助:)

答案 2 :(得分:0)

知道了!我应该用**是**而不是** <**!

相关问题