获取用户输入的数字并打印最大值和最小值(不使用内置函数)
我正在检查一个Python练习,内容如下:
读取一串数字,直到输入“done”。
当输入“done”时,打印出这些数字中最大的和最小的。
而且不能直接使用内置的max()和min()函数。
这是我的代码。错误信息显示“'float'对象不可迭代”。
我觉得我的错误可能是因为没有正确使用列表来计算最小值和最大值。任何建议和帮助都非常感谢!
while True:
inp = raw_input('Enter a number: ')
if inp == 'done' :
break
try:
num = float(inp)
except:
print 'Invalid input'
continue
numbers = list(num)
minimum = None
maximum = None
for num in numbers :
if minimum == None or num < minimum :
minimum = num
for num in numbers :
if maximum == None or maximum < num :
maximum = num
print 'Maximum:', maximum
print 'Minimum:', minimum
谢谢!
4 个回答
0
这段代码的意思是……
首先,它会做一些初始化的工作,比如设置一些基本的参数或者变量。接下来,它会进入一个循环,这个循环会重复执行,直到满足某个条件为止。在这个循环里,代码会不断地检查一些事情,比如数据是否正确,或者是否达到了预期的结果。
如果在循环中发现了问题,代码会执行一些错误处理的步骤,确保程序不会崩溃。最后,当所有的操作完成后,代码会返回一个结果,告诉你程序的执行情况。
总的来说,这段代码的结构比较简单,主要是通过循环和条件判断来完成特定的任务。
input_set = []
input_num = 0
while (input_num >= 0):
input_num = int(input("Please enter a number or -1 to finish"))
if (input_num < 0):
break
input_set.append(input_num)
print(input_set)
largest = input_set[0]
for i in range(len(input_set)):
if input_set[i] > largest:
greatest = input_set[i]
print("Largest number is", greatest)
smallest = input_set[0]
for i in range(len(input_set)):
if input_set[i] < largest:
smallest = input_set[i]
print("Smallest number is", smallest)
3
用 num = float(inp)
这行代码,你每次只是在给一个数字赋值,每次新赋值的时候都会把之前的数字覆盖掉。你需要先创建一个列表,然后每次把数字加到这个列表里。可以这样做:
nums = []
while True:
...
nums.append(float(inp))
4
你其实不需要一个列表。你只需要在过程中记录当前的最小值和最大值就可以了。
minimum = None
maximum = None
while True:
inp = raw_input('Enter a number: ')
if inp == 'done':
break
try:
num = float(inp)
except:
print 'Invalid input'
continue
if minimum is None or num < minimum:
minimum = num
if maximum is None or num > maximum:
maximum = num
print 'Maximum:', maximum
print 'Minimum:', minimum