我正在审查执行以下操作的python练习:
读取数字列表,直到“完成”获取 进入。
输入“完成”时,打印 最大和最小的 编号
它应该是而不是直接 使用内置函数max() 和min()。
这是我的来源。 Traceback说,“'浮动'对象不可迭代”
我认为我的错误来自于没有正确使用列表来计算最小和最大值。 任何提示和帮助将不胜感激!
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
谢谢!
答案 0 :(得分: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
答案 1 :(得分:3)
使用num = float(inp)
,您只需分配一个号码,并在每次分配新号码时覆盖它。您必须先创建列表,然后每次都为其添加数字。像这样:
nums = []
while True:
...
nums.append(float(inp))
答案 2 :(得分: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 :(得分:0)
尝试此代码:
def max(data):
l = data[0]
s = data[0]
for num in data:
if num > l:
l = num
elif num < s:
s = num
return l, s
print(max([0, 10, 15, 40, -5, 42, 17, 28, 75]))