python - 应该检查每个数字并得到错误的输出
问题描述
我有一个任务:在输入 [x;y] 上有一个范围,然后我应该检查该范围内的每个数字并检查数字中的每个数字。如果它很奇怪,我应该打印它,例如:3, 20 我应该打印 4,6,8,20
def check(num):
if int(num) % 2 == 0:
return True
x, y = int(input()), int(input())
numbers = []
if x <= y:
while x != y:
for i in str(x):
if check(i):
numbers.append(x)
x += 1
else:
while y != x:
for i in str(y):
i = int(i)
if check(i):
numbers.append(y)
y += 1
if y == x:
for i in str(x):
if check(i):
numbers.append(x)
print(numbers)
它打印 [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 20, 21, 22, 22, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29 ] 而不是 2,4,6,8,20,22,24,26,28
解决方案
您正在根据每个数字的单个数字进行检查和批准。在附加整个数字之前,您应该检查所有这些。这就是您获得22
两次的原因:第一次获得2
一次,第二次获得一次。你得到10
,因为即使1
是奇数,0
也是偶数,所以你将它附加到你的列表中。
将整个数字的检查移到函数中,并且仅当所有数字都是偶数时才check
返回。这会缩短您的代码。另请注意,如果用户以错误的顺序输入它们,您可以轻松交换。True
x
y
一旦发现一个数字是奇数,该函数check
就会立即返回,您可以看到它只有在循环结束并且所有数字都是偶数时才能返回。False
i
True
def check(num):
for i in str(num):
if int(i) % 2 != 0:
return False
return True
x, y = int(input()), int(input())
if x > y:
x,y = y,x
numbers = []
while x <= y:
if check(x):
numbers.append(x)
x += 1
print (numbers)
结果,3
并20
输入(但20
也3
可以):
[4, 6, 8, 20]
推荐阅读
- java - Java程序中关于(“”)的重要性
- android - 无法在 android web 视图中加载网页
- c++ - 什么触发文件结束?
- c++ - 可以使用 Boost.Hana 将 std::array 解压缩到非类型模板参数包中吗?
- variables - 如何在 JMeter 的 JS223 预处理器或任何其他预处理器中进行数学计算
- javascript - 从 ASP.NET MVC for CanvasJS 图表中的视图对 JavaScript 的变量分配
- matlab - 为什么椒盐噪声 = 0 会改变图像?
- python - ValueError:[E088] 长度为 1027203 的文本超过最大值 1000000。spacy
- html - 如何调整列表样式图像的大小
- ionic-framework - 离子浏览器不起作用 sqlite / ionic serve 不起作用 googlemaps ...如何测试?