编写代码的基本任务,可以从用户那里找到10个数字的和和平均值.

我目前的情况是:

Sum = 0
print("Please Enter 10 Numbers\n")
for i in range (1,11):
    num = int(input("Number %d =" %i))
sum = Sum + num
avg = Sum / 10

但是,我想让它在用户输入诸如"数字2=1sd"之类的答案时不会立即停止代码.相反,我希望它响应为"无效输入.请重试",然后它将从失败的输入重新启动.

例如:

"Number 2 = 1sd"
"Invalid input. Try again."
"Number 2 = ..." 

我该如何做到这一点呢?

推荐答案

您可以输出错误消息并提示重新输入第i个数字,方法是在循环中进行提示,该循环将输出错误消息并在用户输入错误时重新提示.这可以通过处理ValueError异常来实现,该异常在int()函数的输入是无效的整数对象字符串初始值设定项(如"1sd")时引发.这可以通过捕获该异常、输出Invalid input. Try again.并在该异常发生时继续进行来实现.

一个可能满足您需求的结果代码是:

Sum = 0
print("Please Enter 10 Numbers\n")
for i in range (1,11):
    num = None
    while num is None:
        try:
            num = int(input("Number %d =" %i))
        except ValueError:
            print('Invalid input. Try again.')
sum = Sum + num
avg = Sum / 10

Python相关问答推荐

在Python中对分层父/子列表进行排序

@Property方法上的inspect.getmembers出现意外行为,引发异常

不理解Value错误:在Python中使用迭代对象设置时必须具有相等的len键和值

按列分区,按另一列排序

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

根据二元组列表在pandas中创建新列

Python虚拟环境的轻量级使用

如何更改分组条形图中条形图的 colored颜色 ?

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

部分视图的DataFrame

driver. find_element无法通过class_name找到元素'""

根据列值添加时区

需要帮助重新调整python fill_between与数据点

如何创建引用列表并分配值的Systemrame列

导入错误:无法导入名称';操作';

OpenGL仅渲染第二个三角形,第一个三角形不可见

我对这个简单的异步者的例子有什么错误的理解吗?

如何在验证文本列表时使正则表达式无序?

我可以不带视频系统的pygame,只用于游戏手柄输入吗?''

如何根据一定条件生成段id