为了账号安全,请及时绑定邮箱和手机立即绑定

应该检查每个数字并得到错误的输出

应该检查每个数字并得到错误的输出

Smart猫小萌 2022-07-12 17:38:48
我有一个任务:在输入 [x;y] 上有一个范围,然后我应该检查该范围内的每个数字并检查数字中的每个数字。如果它很奇怪,我应该打印它,例如:3, 20 我应该打印 4,6,8,20def check(num):if int(num) % 2 == 0:    return Truex, y = int(input()), int(input())numbers = []if x <= y:while x != y:    for i in str(x):        if check(i):            numbers.append(x)    x += 1else:while y != x:    for i in str(y):        i = int(i)        if check(i):            numbers.append(y)    y += 1if 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
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

您正在根据每个数字的单个数字进行检查和批准。在附加整个数字之前,您应该检查所有这些。这就是您获得22两次的原因:第一次获得2一次,第二次获得一次。你得到10,因为即使1是奇数,0也是偶数,所以你将它附加到你的列表中。


将整个数字的检查移到函数中,并且仅当所有数字都是偶数时才check返回。这会缩短您的代码。另请注意,如果用户以错误的顺序输入它们,您可以轻松交换。True xy


一旦发现一个数字是奇数,该函数check就会立即返回,您可以看到它只有在循环结束并且所有数字都是偶数时才能返回。FalseiTrue


    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]


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号