Python 2.7调试基础代码
Python 2.7 debugging basic code
所以我将此提交给 Cousera 基础课程 python(我对编写代码非常陌生)。有效。但是,我在其中发现了一个错误(我很高兴我能看到它,但也很伤心,因为它存在)。
问题在于,如果一串数字中的最小数字是 第一个数字,那么它会被最大的变量吸收,而不是进入最小的变量。我该如何防止这种情况发生?
提前致谢!
代码如下:
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"
您应该能够通过将最小和最大设置为第一个数字输入并在 while 循环之前执行此操作来解决此问题。这样,对于您看到的每个新数字,您都可以根据其相对大小更新最小值和最大值。像这样:
largest = -1
smallest = None
try:
num1 = raw_input('number\n')
smallest = num1
largest = num1
while True:
num = raw_input('number\n')
num = float(num)
if num > largest:
largest = num
elif smallest > num:
smallest = num
except:
if num =="Done":
print "Maximum is", largest
print "Minimum is", smallest
break
print "Invalid input"
欢迎来到编程世界!
通常,当我进行 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"
纯粹作为一种教育练习,您可以使用 python 的一些功能 (generators
) 使此代码更通用。
这将创建一个名为 numbers
的生成器,其中 returns 一个输入数字序列,在 a
中收集为列表,然后您可以使用内置 min(a)
, max(a)
方法:
def numbers():
while True:
try:
num = input('number\n')
yield float(num)
except ValueError:
if num == "Done":
break
print "Invalid input"
a = list(numbers())
print "Maximum is", max(a)
print "Minimum is", min(a)
所以我将此提交给 Cousera 基础课程 python(我对编写代码非常陌生)。有效。但是,我在其中发现了一个错误(我很高兴我能看到它,但也很伤心,因为它存在)。
问题在于,如果一串数字中的最小数字是 第一个数字,那么它会被最大的变量吸收,而不是进入最小的变量。我该如何防止这种情况发生?
提前致谢!
代码如下:
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"
您应该能够通过将最小和最大设置为第一个数字输入并在 while 循环之前执行此操作来解决此问题。这样,对于您看到的每个新数字,您都可以根据其相对大小更新最小值和最大值。像这样:
largest = -1
smallest = None
try:
num1 = raw_input('number\n')
smallest = num1
largest = num1
while True:
num = raw_input('number\n')
num = float(num)
if num > largest:
largest = num
elif smallest > num:
smallest = num
except:
if num =="Done":
print "Maximum is", largest
print "Minimum is", smallest
break
print "Invalid input"
欢迎来到编程世界!
通常,当我进行 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"
纯粹作为一种教育练习,您可以使用 python 的一些功能 (generators
) 使此代码更通用。
这将创建一个名为 numbers
的生成器,其中 returns 一个输入数字序列,在 a
中收集为列表,然后您可以使用内置 min(a)
, max(a)
方法:
def numbers():
while True:
try:
num = input('number\n')
yield float(num)
except ValueError:
if num == "Done":
break
print "Invalid input"
a = list(numbers())
print "Maximum is", max(a)
print "Minimum is", min(a)