-1

Coursera Python 作业

我不明白这段代码有什么问题。它适用于最大的,但不是最小的。并且两行代码都是一样的!我是新来的,对编程也很陌生,请原谅我的经验不足。请注意,我需要用这些方法解决这个问题,因为它是课程中的章节。再次抱歉

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)
4

3 回答 3

0

您不应该设置smallestand largestto 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
于 2020-07-01T18:23:26.400 回答
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)

第一次输入一个数字时,它会检查它是否是一个数字,然后分配给最小和最大的两个。第一次后,用户可以输入数字,它工作正常。希望能帮助到你 :)

于 2020-07-01T18:23:44.913 回答
0

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

于 2020-07-01T20:29:56.550 回答