python-3.x - 如何用while循环构造一个python程序
问题描述
任务1:需要编写一个while/for循环程序,从用户那里获取1到20之间的5个整数输入并将其存储在一个列表中。
任务 2:现在打印 1 到 20 之间的序列,跳过用户先前提供并保存在列表中的所有 5 个数字。
我可以完成 Task1 :
skip = []
for i in range(0,5):
temp = int(input("Enter any number between 1 to 20 :: "))
skip.append(temp)
但是需要Task2的帮助。
解决方案
任务 1:查看您的解决方案,请考虑以下事项:
- 用户插入非数字值作为输入。
- 用户插入一个大于 20 或小于 0 的数字。
考虑您允许重复的用户输入,以下代码将确保不会发生上述问题:
user_input_int = list()
while len(user_input_int) < 5:
try:
tmp_in = int(input("Enter any number between 1 to 20: "))
if 0 < tmp_in < 20:
user_input_int.append(tmp_in)
print(user_input_int)
except ValueError as err:
print(err)
** 如果您希望用户只输入不同的值,您可以将 更改list
为 a set
(不要忘记也更改append
为add
)。**
任务2:这里的解决方案并不复杂,您只需使用范围函数(您已经在解决方案中使用它)遍历1-20之间的数字,并排除用户输入的数字:
# Starting from 1 in order to skip 0 and stop at 21 in order to print 20
for i in range(1, 21):
if i in user_input_int:
continue
print(i)
推荐阅读
- r - 添加一个“0”。或字符串中某些数字开头的“0.0”
- openedge - 如何将临时表从过程文件传递到窗口
- r - 在 R 中的 plotly 或 ggplot 中将箭头(或箭头图像)添加到条形图上?
- html - 在跨越一定行数的动态生成的 html 表中浮动图标或 div
- spring - 如何处理 Spring Batch 中的 blob 字段?
- python - 从magnetlink infohash获取元数据
- parsing - 为什么我的解析器生成报告该 LALR(1) 语法不是 LALR(1)?
- java - 在 Java 中哪里设置参数 min.insync.replicas 和 acks?
- typescript - 如何动态更改 VSCode 扩展上的文档文本
- angular - 角 | 使用定时器每 5 秒刷新一次表