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

问题陈述:找出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


但我没有得到任何输出。我的程序有什么问题?


慕姐4208626
浏览 183回答 3
3回答

慕码人8056858

问题是在 python 3 中/执行浮点除法,而不是地板除法。更改t /= 10为t //= 10。在 Python2 中,3 / 4=>&nbsp;0。在 Python 3 中,3 / 4=>0.75和3 // 4=>&nbsp;0。并且您的算法依赖于地板除法(或整数除法)来消除数字。

MYYA

def all_even(number):&nbsp; &nbsp; num_str = str(number)&nbsp; &nbsp; digit_bool = []&nbsp; &nbsp; for digit in num_str:&nbsp; &nbsp; &nbsp; &nbsp; if int(digit) % 2 == 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; digit_bool.append(True)&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; digit_bool.append(False)&nbsp; &nbsp; return digit_boolmylist = [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]))

当年话下

使用列表推导 python3.4 例如查找 1000 和 9001 之间的数字,其中每个数字都是偶数1.检查数字本身是否偶数2.如果是,则遍历该数字的每一位以检查其是否偶数3.它的长度应等于数字的长度&nbsp;[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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python