所以我提交了这个关于基本python的Cousera课程(我对编写代码非常新)。有效。然而,我发现了它的一个错误(我很高兴我能看到并且伤心欲绝,因为它存在)。
问题在于,如果一串数字中的最小数字是第一个数字,它会被最大变量吸收,而不会被最小变量吸收。我该如何防止这种情况发生?
提前致谢!
以下代码:
largest = -1
smallest = None
while True:
try:
num = raw_input('number\n')
float(num)
if num > largest:
largest = num
elif smallest is None:
smallest = num
elif smallest > num:
smallest = num
except:
if num =="Done":
print "Maximum is", largest
print "Minimum is", smallest
break
print "Invalid input"
答案 0 :(得分:1)
欢迎来到编程世界!
通常当我进行min / max比较时,我从负和正无穷大开始,而不是None / null或列表的第一个元素,因为这让我头疼。
这段代码似乎对我很好。
largest = float("-inf")
smallest = float("inf")
while True:
try:
num = raw_input('number: ')
num = float(num) # I reassign num for good-measure
if num > largest:
largest = num
if num < smallest:
smallest = num
except:
if num == "Done":
print "Maximum is", largest
print "Minimum is", smallest
break
print "Invalid input"
答案 1 :(得分:1)
纯粹作为一种教育练习,你可以使用python的一些功能(generators
)来使这段代码更通用。
这将创建一个名为numbers
的生成器,它返回一系列输入数字,在a
中作为列表收集,然后您可以使用内置min(a)
,{{1}方法:
max(a)
答案 2 :(得分:0)
您应该能够通过将最小和最大值设置为第一个数字输入来解决此问题,并在while循环之前执行此操作。这样,对于您看到的每个新数字,您可以根据其相对大小更新最小值和最大值。像这样:
offline