Python 最高负值
我不明白为什么这样不行。我想从一系列用户输入的负数中打印最高负数。例如,用户输入:-1,-5,-3,程序返回-1。但是我的程序(如下)返回-5。为什么会这样?我的代码完全搞乱了吗?我知道我可以使用一个列表和max来处理它,但我不想让程序过于复杂Python 最高负值,python,python-3.x,user-input,highest,Python,Python 3.x,User Input,Highest,我不明白为什么这样不行。我想从一系列用户输入的负数中打印最高负数。例如,用户输入:-1,-5,-3,程序返回-1。但是我的程序(如下)返回-5。为什么会这样?我的代码完全搞乱了吗?我知道我可以使用一个列表和max来处理它,但我不想让程序过于复杂 x = 0 done = False while not done: y = int(input("Enter another number (0 to end): ")) num = y if num != 0:
x = 0
done = False
while not done:
y = int(input("Enter another number (0 to end): "))
num = y
if num != 0:
if num < x:
x = num
else:
done = True
print(str(x))
x=0
完成=错误
虽然没有这样做:
y=int(输入(“输入另一个数字(0到结尾):”)
num=y
如果num!=0:
如果num
您从未将输入值与迄今为止最大的负值进行比较。您还将初始值设置为零,这不是合适的结果值。处理这些问题的一种方法是更换线路
if num < x
x = num
如果num
与
如果num<0且(x==0或x
当然还有其他方法,包括将x
设置为尽可能小的负数。这将简化您的比较,因为在我上面的代码中,只对x
进行了检查,以前从未设置过
请注意,如果根本没有输入负数,则结果为零。这可能不是您想要的。您从未将输入值与迄今为止最大的负值进行比较。您还将初始值设置为零,这不是合适的结果值。处理这些问题的一种方法是更换线路
if num < x
x = num
如果num
与
如果num<0且(x==0或x
当然还有其他方法,包括将x
设置为尽可能小的负数。这将简化您的比较,因为在我上面的代码中,只对x
进行了检查,以前从未设置过
请注意,如果根本没有输入负数,则结果为零。这可能是你想要的,也可能不是你想要的。你的操作符应该大于
,不小于你的操作符应该大于,不小于最高负值与最大值相同
现在,循环不变量应该是x
是迄今为止观察到的最大值。但您实际上存储了迄今为止观察到的最小值:实际上,如果新值小于,则将其分配给x
因此,一个快速解决方法是将比较改为
。但现在,初始最大值将为0
。我们可以将初始值设置为例如None
,如果x
为None
,则将x
设置为输入值
x = None
done = False
while not done:
y = int(input("Enter another number (0 to end): "))
num = y
if num != 0:
if x is None or num > x:
x = num
else:
done = True
最高负值与最大值相同
现在,循环不变量应该是x
是迄今为止观察到的最大值。但您实际上存储了迄今为止观察到的最小值:实际上,如果新值小于,则将其分配给x
因此,一个快速解决方法是将比较改为
。但现在,初始最大值将为0
。我们可以将初始值设置为例如None
,如果x
为None
,则将x
设置为输入值
x = None
done = False
while not done:
y = int(input("Enter another number (0 to end): "))
num = y
if num != 0:
if x is None or num > x:
x = num
else:
done = True
只需使用内置的max
函数即可找到最大数量
numbers = []
done = False
while not done:
number = int(input("Enter another number (0 to end): "))
if number < 0:
numbers.append(number)
else:
done = True
print(max(numbers))
number=[]
完成=错误
虽然没有这样做:
number=int(输入(“输入另一个数字(0到结尾):”)
如果数字<0:
数字。追加(数字)
其他:
完成=正确
打印(最大(数字))
只需使用内置的max
函数即可找到最大数量
numbers = []
done = False
while not done:
number = int(input("Enter another number (0 to end): "))
if number < 0:
numbers.append(number)
else:
done = True
print(max(numbers))
number=[]
完成=错误
虽然没有这样做:
number=int(输入(“输入另一个数字(0到结尾):”)
如果数字<0:
数字。追加(数字)
其他:
完成=正确
打印(最大(数字))
因为-5<-1?这就是最高负值的含义。那你要最小的吗?反向操作您正在将x设置为最低值,而不是最高值。在if num
中反转比较器“我知道我可以使用一个列表和最大值,但我不想使程序过于复杂”您的方式使程序过于复杂。使用max
将是一行代码。因为-5<-1?这就是最高负值的含义。那你要最小的吗?反向操作您正在将x设置为最低值,而不是最高值。在if num
中反转比较器“我知道我可以使用一个列表和最大值,但我不想使程序过于复杂”您的方式使程序过于复杂。使用max
将是一行代码。这是一个很好的代码。感谢您的解释,并展示了一行示例。真令人印象深刻!这是很好的代码。感谢您的解释,并展示了一行示例。真令人印象深刻!很好的解决方案。非常感谢。我不熟悉使用None,但我现在会记住它以供将来参考。很好的解决方案。非常感谢。我不熟悉使用None,但我现在会记住它以供将来参考。
numbers = []
done = False
while not done:
number = int(input("Enter another number (0 to end): "))
if number < 0:
numbers.append(number)
else:
done = True
print(max(numbers))