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

检查所有单个数字是否在一个范围内

检查所有单个数字是否在一个范围内

慕姐4208626 2021-07-09 14:06:42
问题陈述:找出m和n之间的所有这样的数字(都包括在内),使得数字的每一位都是偶数。第一行包含用逗号分隔的值m和n。得到的数字应该用逗号打印- 单行上的分隔序列。约束条件:1000<=m<=9000 和 1000<=n<=9000我的解决方案:inp=input()arr=inp.split(',')m=int(arr[0])n=int(arr[1])num=[]for i in range(m,n+1):  t=i  while t>0:    j=t%10    if j%2==0:      t/=10    else:      break  if t==0:    num.append(i)for i in range(len(num)):  if i!=len(num)-1:    print(num[i],end=',')  else:    print(num[i],end='')例如,如果 m=2000,n=2010,那么输出应该是 2000,2002,2004,2006,2008但我没有得到任何输出。我的程序有什么问题?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

问题是在 python 3 中/执行浮点除法,而不是地板除法。更改t /= 10t //= 10

在 Python2 中,3 / 4=> 0。在 Python 3 中,3 / 4=>0.753 // 4=> 0。并且您的算法依赖于地板除法(或整数除法)来消除数字。


查看完整回答
反对 回复 2021-07-13
?
MYYA

TA贡献1868条经验 获得超4个赞

def all_even(number):

    num_str = str(number)

    digit_bool = []

    for digit in num_str:

        if int(digit) % 2 == 0:

            digit_bool.append(True)

        else:

            digit_bool.append(False)

    return digit_bool


mylist = [i for i in range(2000, 2011) if all(all_even(i))]

退货


[2000, 2002, 2004, 2006, 2008]

如果你想打印它:


print(','.join([str(i) for i in mylist]))


查看完整回答
反对 回复 2021-07-13
?
当年话下

TA贡献1890条经验 获得超9个赞

使用列表推导 python3.4 例如查找 1000 和 9001 之间的数字,其中每个数字都是偶数


1.检查数字本身是否偶数

2.如果是,则遍历该数字的每一位以检查其是否偶数

3.它的长度应等于数字的长度


 [i for i in range(1000,9001) if i%2==0 and len([int(j) for j in list(str(i)) if int(j)%2==0])==len(str(i))]

产出 :

[2000, 2002, 2004, 2006, 2008, 2020, 2022, ...... 8880, 8882, 8884, 8886,8888]


查看完整回答
反对 回复 2021-07-13
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信