Python代码中的最大值和最小值不正确
当我试图运行这段代码时,我得到了错误的最大值和最小值。有人能告诉我怎么修吗?我不允许使用“max”和“min” 更新:我已经更新了代码,但仍然不能正常工作。 更新2:代码现在可以工作了!非常感谢你们Python代码中的最大值和最小值不正确,python,Python,当我试图运行这段代码时,我得到了错误的最大值和最小值。有人能告诉我怎么修吗?我不允许使用“max”和“min” 更新:我已经更新了代码,但仍然不能正常工作。 更新2:代码现在可以工作了!非常感谢你们 minimum=float('inf') maximum=None count=0 total=0 number=input ("Please enter the amount of numbers you wish to categorize: ") while True: num =
minimum=float('inf')
maximum=None
count=0
total=0
number=input ("Please enter the amount of numbers you wish to categorize: ")
while True:
num = input("Enter a number: ")
count+=1
total+=num
if num is None or num < minimum:
minimum = num
if num is None or num > maximum:
maximum = num
if count == number:
break
print "The average of your numbers is ", round ((total / count),2),"."
print 'The largest number is:', maximum,"."
print 'The smallest number is:', minimum,"."
minimum=float('inf')
最大值=无
计数=0
总数=0
数字=输入(“请输入您希望分类的数字数量:”)
尽管如此:
num=输入(“输入一个数字:”)
计数+=1
总数+=num
如果num为None或num<最小值:
最小值=num
如果num为无或num>最大值:
最大值=num
如果计数==数字:
打破
打印“您的数字的平均值为”,四舍五入((总数/计数),2),”
打印“最大值为:”,最大值为“”
打印“最小值为:”,最小值为“”
您的最小值和最大值的初始值和条件不正确
minimum = None
maximum = None
...
if minimum is None or num < minimum:
minimum = num
if maximum is None or num > maximum:
maximum = num
...
最小值=无
最大值=无
...
如果最小值为无或num<最小值:
最小值=num
如果最大值为无或num>最大值:
最大值=num
...
您还可以通过检查count
是否等于1,而不是None
您的最小值和最大值的初始值和条件是否不正确来解决此问题
minimum = None
maximum = None
...
if minimum is None or num < minimum:
minimum = num
if maximum is None or num > maximum:
maximum = num
...
最小值=无
最大值=无
...
如果最小值为无或num<最小值:
最小值=num
如果最大值为无或num>最大值:
最大值=num
...
您还可以通过检查count
是否等于1而不是None
来解决此问题。需要最少处理特殊值的解决方案是将两个变量初始化为+/-无穷大
minimum=float("-inf")
maximum=float("inf")
需要最少处理特殊值的解决方案是将两个变量初始化为+/-无穷大
minimum=float("-inf")
maximum=float("inf")
因为这是你应该学习的家庭作业。以下是一些解决问题的方法:
一个错误是在程序启动时将最大值
和最小值
初始化为0
。如果只输入正数,最小值将保持在0
,但不是真正的最小值。要解决这种情况,您应该查看列表或将这两个变量初始化为一些值,这些值唯一地标识了一个无效的初始值,不会泄漏到您的计算中(我建议None
)。在第一次迭代中,将最小值
和最大值
设置为第一次输入的值
修改后:您正在比较字符串,因为原始输入
返回字符串,而不是数字。您必须使用int
将这些字符串转换为整数值,例如int(原始输入(…)
)。此外,您的缺口严重,我修复了缺口
其他想法:既然不允许您使用min
和max
,您可以只使用
tmp=sorted([int(raw_input('Number: ')) for x in xrange(number)])
minimum, maximum = tmp[0], tmp[-1]
但我想这会让你的作业失败:)因为这是你应该学习的家庭作业。以下是一些解决问题的方法:
一个错误是在程序启动时将最大值
和最小值
初始化为0
。如果只输入正数,最小值将保持在0
,但不是真正的最小值。要解决这种情况,您应该查看列表或将这两个变量初始化为一些值,这些值唯一地标识了一个无效的初始值,不会泄漏到您的计算中(我建议None
)。在第一次迭代中,将最小值
和最大值
设置为第一次输入的值
修改后:您正在比较字符串,因为原始输入
返回字符串,而不是数字。您必须使用int
将这些字符串转换为整数值,例如int(原始输入(…)
)。此外,您的缺口严重,我修复了缺口
其他想法:既然不允许您使用min
和max
,您可以只使用
tmp=sorted([int(raw_input('Number: ')) for x in xrange(number)])
minimum, maximum = tmp[0], tmp[-1]
但我想这会挫败你的任务:)除了伊格纳西奥所说的,你过早地打破了你的循环。要处理中断前输入的最后一个数字,请将if count==number:break
块移动到最小/最大设置块之后。除了Ignacio所说的,您过早地中断了循环。要处理在中断前输入的最后一个数字,请将if count==number:break
块移动到最小/最大设置块之后。注意,您可以通过
maximum=float('-inf')
minimum=float('inf')
print minimum, maximum
这可能对你的家庭作业有用;)
< P >伊格纳西奥的答案最好是考虑到用户输入<代码> 0代码>代码> <代码>号码<代码>(因为<代码>没有< /代码>将是更不可比的最大值,而不是<代码> -INF < /代码>。
编辑:
mVChr正确发现的备注:
而不是使用while True
循环和中断
为什么不写
while count < number:
请注意,您可以通过将数字设置为无穷大或负无穷大
maximum=float('-inf')
minimum=float('inf')
print minimum, maximum
这可能对你的家庭作业有用;)
< P >伊格纳西奥的答案最好是考虑到用户输入<代码> 0代码>代码> <代码>号码<代码>(因为<代码>没有< /代码>将是更不可比的最大值,而不是<代码> -INF < /代码>。
编辑:
mVChr正确发现的备注:
而不是使用while True
循环和中断
为什么不写
while count < number:
我假设这是作业,就像你说的“我不允许使用‘max’和‘min’”。以后,请在任何家庭作业问题中添加家庭作业
标记。考虑何时初始化最小值
和最大值
,以及