我无法完成Python任务。我使用的是Python 3.0 因此程序要求用户输入一组20个数字,将它们存储到一个列表中,并对其进行计算以输出最大数字,最小数,总和和平均数。
现在,一切正常,除了一件事!如果用户输入非数字,我希望程序再次询问输入。 我很难做到这一点,我想到了一个布尔变量,我不确定。
非常感谢你的帮助。 这是我的代码:
import time
#Defining the main function
def main():
numbers = get_values()
get_analysis(numbers)
#Defining the function that will store the values
def get_values():
print('Welcome to the Number Analysis Program!')
print('Please Enter A Series Of 20 Random Numbers')
values =[]
for i in range(20):
value =(int(input("Enter A Random Number " + str(i + 1) + ": ")))
values.append(value)
#Here we store the data into a list called "values"
return values
#Defining the function which will output the numbers.
def get_analysis (numbers):
print(".................................")
print("The Lowest Number Is:", min(numbers))
time.sleep(1)
print("The Highest Number Is:", max(numbers))
time.sleep(1)
print("The Sum The Numbers Is:", sum(numbers))
time.sleep(1)
print("The Average The Numbers Is:", sum(numbers)/len(numbers))
print(".................................")
main()
文斯
答案 0 :(得分:0)
我在Python 3上运行它并得到了这个
$ python3 so.py
Welcome to the Number Analysis Program!
Please Enter A Series Of 20 Random Numbers
Enter A Random Number 1: 3
Enter A Random Number 2: 4
Enter A Random Number 3: 2
Enter A Random Number 4: 6
Enter A Random Number 5: 4
Enter A Random Number 6: 3
Enter A Random Number 7: 5
Enter A Random Number 8: 6
Enter A Random Number 9: 8
Enter A Random Number 10: 9
Enter A Random Number 11: 7
Enter A Random Number 12: 6
Enter A Random Number 13: 5
Enter A Random Number 14: 4
Enter A Random Number 15: 3
Enter A Random Number 16: 2
Enter A Random Number 17: 4
Enter A Random Number 18: 6
Enter A Random Number 19: 7
Enter A Random Number 20: 1
.................................
The Lowest Number Is: 1
The Highest Number Is: 9
The Sum The Numbers Is: 95
The Average The Numbers Is: 4.75
.................................
这很好用。现在做一个像这样的功能
import re
def isInteger(x):
seeker = re.compile("-?[0-9]+")
return bool(seeker.search(x))
您可以使用带标题的循环
while not isInnteger(x):
##get number
重复直到实际输入一个数字。
答案 1 :(得分:0)
一些变化:
添加了一个get_int()
函数,该函数会反复提示,直到输入一个整数
用它来简化您的get_values()
功能
添加了how_many
参数。跟随“不要重复自己”#34;原则 - 如果您想更改项目数量,可以在一个地方进行
欢迎来到"欢迎来到该计划"从get_values
发送到main
的消息
不要把每一个字或者查克诺里斯带给你的资本化
我将get_analysis()
重命名为show_analysis()
,因为它会打印结果而不是返回结果;准确的功能名称很重要!
我将分析简化为数据驱动的循环;这更像是一种品味而不是其他任何东西,但我认为它更清晰,更容易理解,特别是随着测试数量的增加,也有助于不要重复自己
和最终结果:
import time
def get_int(prompt):
while True:
try:
return int(input(prompt))
except ValueError:
# couldn't parse as int
pass
def get_values(how_many):
return [get_int("Enter #{}: ".format(i)) for i in range(1, how_many+1)]
def average(lst):
return sum(lst) / len(lst)
def show_analysis(numbers):
tests = [
("The lowest value is", min),
("The highest value is", max),
("The sum is", sum),
("The average is", average)
]
print(".................................")
for label,fn in tests:
print("{} {}".format(label, fn(numbers)))
time.sleep(.5)
print(".................................")
def main():
how_many = 20
print("Welcome to the Number Analysis program!")
print("Please enter {} integers".format(how_many))
numbers = get_values(how_many)
show_analysis(numbers)
main()