[这是我到目前为止所做的。]
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'未定义”。
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
感谢您提出此类问题,让本页的下一位访问者更容易使用Python。
my_numbers.append(x)
应该在while
测试之后,例如:NameError
一样抓住ValueError
。希望这有帮助。
答案 1 :(得分:0)
my_numbers.append(x)
向下移动。答案 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)