需要一些帮助来计算整数列表中的平均值

时间:2016-11-07 01:58:30

标签: python

[这是我到目前为止所做的。]

import statistics

print ("Type '0' at any time to end program.")

my_numbers=[]

while True:

    try:
        x=int(input("Enter a positive integer. "))
        my_numbers.append(x)
        while x<0:
            print ("Enter a POSITIVE integer.")
            x=int(input("Enter a positive integer. "))
    except ValueError:
        print ("Invalid character entered. Enter a positive integer.")
    if x==0:
        print ('Your mean is',statistics.mean(my_numbers))
        print ('Your median is',statistics.median(my_numbers))
        print ('Your range is',max(my_numbers) - min(my_numbers))
        break

基本上,代码需要在用户输入“0”后询问正整数并计算它们的均值,中位数和范围。代码还需要不允许用户输入非正整数。我有两个问题。

  • 最终的计算包括负整数和零。我需要将负数和零从最终计算中排除。注意:由于某种原因,小数未包含在最终计算中。

  • 非整数在第13行返回错误“NameError:name'x'未定义”。

非常感谢任何帮助。感谢。

5 个答案:

答案 0 :(得分:0)

感谢您提出此类问题,让本页的下一位访问者更容易使用Python。

  • 最终计算包括负整数和零,因为您在测试之前将其附加到列表中。my_numbers.append(x)应该在while测试之后,例如:
  • 为用户输入引发NameError,例如字符串或字符 这些字符串或字符无法解析为整数(如预定义的Python变量)。您 应该像NameError一样抓住ValueError

希望这有帮助。

答案 1 :(得分:0)

  1. my_numbers.append(x)向下移动。
  2. 您需要的是抓住NameError

答案 2 :(得分:0)

只有在获得有效的x时才能调用Map<String, Object>

答案 3 :(得分:0)

  

最终的计算包括负整数和零。一世   需要负数和零被排除在决赛之外   计算。

因为您要在支票while x<0之前附加输入。

解决方案:在阻止时移动下面的附加语句my_numbers.append(x)

  

注意:小数未包含在最终计算中   某种原因。

int(x)将小数/浮点数转换为整数,即技术上你没有任何小数。

解决方案:使用float()代替int()

  

非整数返回错误“NameError:name'x'未定义”in   第13行。

使用int()NameError的{​​{1}}传递给无法转换(类型投放)的追踪者。

解决方案:您需要像预期的ValueError那样处理此次曝光。

最终代码:

import statistics

print ("Type '0' at any time to end program.")

my_numbers=[]

while True:
    try:
        x=int(input("Enter a positive integer. "))        
        while x<0:
            print ("Enter a POSITIVE integer.")
            x=int(input("Enter a positive integer. "))
    my_numbers.append(x)
    except ValueError:
        print ("Invalid character entered. Enter a positive integer.")
    except NameError:
        print ("Invalid character entered. Enter a positive integer.")
    if x==0:
        print ('Your mean is',statistics.mean(my_numbers))
        print ('Your median is',statistics.median(my_numbers))
        print ('Your range is',max(my_numbers) - min(my_numbers))
        break

答案 4 :(得分:-1)

import statistics

print ("Type '0' at any time to end program.")

my_numbers=[]       #list to hold integer input from the user


while True:
    try:
        x = int(input("Enter a positive integer. "))
        while x<0:
            print("Enter a POSITIVE integer.")
            x = int(input("Enter a positive integer: "))

except ValueError:
    print ("Invalid character entered. Enter a positive integer.")

if (x==0): 
    print ('Your mean is: ',statistics.mean(my_numbers))
    print ('Your median is: ',statistics.median(my_numbers))
    print ('Your range is: ',max(my_numbers) - min(my_numbers))
    break

# my_numbers.append(x) is moved down the loop
# the value of x will only be appended to my_numbers if it is valid input
my_numbers.append(x)