我如何让min max工作?

时间:2014-11-24 00:05:09

标签: python max min

这是我到目前为止所得到的,但是无论用户输入什么,max都会返回为1,min返回为零。其他所有工作和正确计算。请帮助,不知道还有什么可以尝试

num=input("How many numbers would you like to enter?")
num_int=int(num)
sum=0
count_even=0
count_odd=0
num_pos=0
num_neg=0
if num_int==0:
     print("You requested no numbers so there are no results reported")
elif num_int<0:
     print("You entered a negative number, so the program terminates")
else:
    for n in range(num_int):
        integer=input("Enter an integer number")
        integer_int=int(integer)
        sum+=integer_int
        avg=sum/num_int
        if integer_int%2==0:
            count_even=count_even+1
        else:
            count_odd=count_odd+1
        if integer_int>=0:
            num_pos=num_pos+1
        else:
            num_neg=num_neg+1
    for i in range(num_int):
        maximum=max(integer)
        minimum=min(integer)
print("Number of integers entered:",num_int)
print("Sum of those integers is:",sum)
print("Average of those integers is:",avg)
print("Number of evens is:",count_even)
print("Number of odds is:",count_odd)
print("Number of negatives is:",num_neg)
print("Number of positives is:",num_pos)
print("Maximum number is:",maximum)
print("Minimum number is:",minimum)

3 个答案:

答案 0 :(得分:1)

您应该将输入添加到列表中,然后获取该列表的最大值和最小值。

所以,它看起来像:

numbers = []

# parse num_int

for n in range(num_int):
    integer_int = # parse integer from input
    numbers.append(integer_int)
    # do your calculations for even, odd, pos, and neg

maximum = max(numbers)
minimum = min(numbers)

# print stuff

传递给maxmin的参数应该是一个列表。

答案 1 :(得分:1)

使用mn和mx变量跟踪最高和最低值。也不要将sum用作变量名称:

num = input("How many numbers would you like to enter?")
num_int = int(num)
sm = 0 # don't use sum as a variable name 
count_even = 0
count_odd = 0
num_pos = 0
num_neg = 0
mn = None
mx = None
if num_int == 0:
    print("You requested no numbers so there are no results reported")
elif num_int < 0:
    print("You entered a negative number, so the program terminates")
else:
    for n in range(num_int):
        integer = input("Enter an integer number")
        integer_int = int(integer)
         # if it is the first number or this number is higher than the highest so far 
        if integer_int is None or integer_int> mx:
            mx = integer_int
         # if it is the first number or this number is lower than the lowest so far
        if mn is None or integer_int < mn:
            mn = integer_int
        sm += integer_int
        avg = sm / num_int
        if integer_int % 2 == 0:
            count_even += 1
        else:
            count_odd += 1
        if integer_int >= 0:
            num_pos += 1
        else:
            num_neg += 1

print("Number of integers entered:", num_int)
print("sum of those integers is:", sm)
print("Average of those integers is:", avg)
print("Number of evens is:", count_even)
print("Number of odds is:", count_odd)
print("Number of negatives is:", num_neg)
print("Number of positives is:", num_pos)
print("Maximum number is:",mx)
print("Minimum number is:",mn)

使用列表并总结正确的方法可以大大缩短您的代码:

num = input("How many numbers would you like to enter?")
num_int = int(num)
if num_int == 0:
    print("You requested no numbers so there are no results reported")
elif num_int < 0:
    print("You entered a negative number, so the program terminates")
else:
    ints = [int(input("Enter an integer number")) for _ in range(num_int)]
    sm = sum(ints)
    ln = len(ints)
    print("Number of integers entered:", ln)
    print("sum of those integers is:", sm)
    print("Average of those integers is:", sm / ln)
    print("Number of evens is:", sum(1 for x in ints if not x % 2))
    print("Number of odds is:", sum(1 for x in ints if x % 2))
    print("Number of negatives is:", sum(x < 0 for x in ints))
    print("Number of positives is:", sum(x >=0  for x in ints))
    print("Maximum number is:",max(ints))
    print("Minimum number is:",min(ints))

答案 2 :(得分:0)

它不起作用的原因是因为您没有存储输入的任何整数。每次用户输入新的整数时,您的代码都会忘记输入的最后一个,并使用输入的新数字。

sum+=iteger_int

只是将值相加,而不是将它们存储为单个值。如上所述,使用列表可能是存储用户输入的所有值的最佳方式。