0

我目前正在学习 Python 编程课程,我们的任务是通过提示用户来完成查找最高数字的任务。使用数组很容易完成,但我们无法将它们用于此分配。我遇到一个问题,如果我输入一系列数字,例如“55、100、99”,我的程序会告诉我 99 是最高数字。我不确定出了什么问题。

largest = None
smallest = None
temp = None
while temp != "done":
    num = raw_input("Enter a number: ")
    if num == "done" :
        break
    try:
        int(num)
    except:
        print ('That is not an integer. Try again')
        break
    print(largest)
    if largest is None:
        largest = num 
    if largest != None and num > largest:
        largest = num
print ('Invalid input')
print "Maximum is", largest
print "Minimum is", smallest
4

4 回答 4

1

更改int(num)num = int(num)保存类型转换

于 2015-07-16T21:14:30.620 回答
1

改变:

int(num)

至:

num = int(num)

否则,num仍然是一个字符串,因为您没有将转换结果保存在任何地方。

于 2015-07-16T21:14:31.727 回答
0

我认为除了将 int(num) 保存到 num 之外,您不需要在每个循环中检查最大/最小是否为 None,而只需在第一次进入循环时对其进行初始化:

first=True
while True:
    num = raw_input("Enter a number: ")
    if num == "done" :
        break
    try:
        num = int(num)
    except:
        print ('That is not an integer. Try again')
        raise

    if first:
        largest = smallest = num
        first = False
    if num > largest:
        largest = num
    if num < smallest:
        smallest = num
print "Maximum is", largest
print "Minimum is", smallest

发生错误时,您也可以只引发异常,而不是只跳出循环(这样它更像是 pythonic 并且不会打印那些 Max/Min 结果)。

于 2015-07-16T21:53:11.273 回答
0

我认为你不需要在例外套房休息一下。原因是程序在执行例外套件中的代码时退出。也就是说,您从stringint的类型转换没有保存在任何地方。要保存这个,试试这个:

num= int(num) instead of just int(num)
于 2015-07-16T21:51:04.730 回答