Python代码中的最大值和最小值不正确

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 =

当我试图运行这段代码时,我得到了错误的最大值和最小值。有人能告诉我怎么修吗?我不允许使用“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 = 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’”。以后,请在任何家庭作业问题中添加
家庭作业
标记。考虑何时初始化
最小值
最大值
,以及