Python:用于获取最大值和最小值而不使用最大值和最小值函数的程序
问题描述:
我编写了下面的代码来获取最大值和最小值作为我的MOOC分配的一部分。这个程序不断接受用户的输入,直到用户键入'完成'。Python:用于获取最大值和最小值而不使用最大值和最小值函数的程序
一旦完成键入,程序会给出最大值和最小值的结果。问题是最大值的结果总是正确的,但最小值的结果始终为“无”。
largest = None
smallest = None
while (True) :
inp = raw_input('Enter a number: ')
if inp == 'done' :
break
try:
inp = float(inp)
except:
print 'Invalid input'
continue
if inp is None or inp > largest:
largest = inp
if inp is None or inp < smallest:
smallest = inp
print largest, smallest
答
您发布的代码给出的最大和最小值都为None。尝试抓住后有一个继续声明,显然它只是继续输入并且不会终止。继续会告诉循环跳到下一次迭代。所以继续必须进入除了块(这可能是一个缩进错误)。其次,你将输入与None进行比较。我想这是一个错字的你,如果条件(它应该是“如果最大的是无”不是“如果INP是无”)
修改后的代码:(检查最后2如果条件):
largest = None
smallest = None
while (True) :
inp = raw_input('Enter a number: ')
if inp == 'done' :
break
try:
inp = float(inp)
except:
print 'Invalid input'
continue
if largest is None or inp > largest:
largest = inp
if smallest is None or inp < smallest:
smallest = inp
print largest, smallest
你想要在except块内的continue语句,否则谁知道什么是inp(就像一个字符串!) – MasterOdin
对不起,错过了!谢谢! @MasterOdin – Quark
除了block以外的用意是,如果用户输入的不是字符串或其他数据类型等数值以外的东西,而只是输出Invalid Input并返回到开头,因为我们不需要任何其他数据类型。我完成了这项任务。非常感谢您的帮助。 –