这是我到目前为止所得到的,但是无论用户输入什么,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)
答案 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
传递给max
和min
的参数应该是一个列表。
答案 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
只是将值相加,而不是将它们存储为单个值。如上所述,使用列表可能是存储用户输入的所有值的最佳方式。