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

2024-04-18 19:48:50 发布

您现在位置:Python中文网/ 问答频道 /正文

问题陈述: 求m和n之间的所有这些数(都包括在内),使每个数都是偶数数字。那个第一行包含由a分隔的值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,那么输出应该是20002002200420062008

但我没有得到任何输出。我的程序有什么毛病?在


Tags: inltforlenifrange数字else
3条回答
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))]

退货

^{pr2}$

如果要打印:

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

你的起始号码和结束号码都有数字。有效数字为0、2、4、6、8。现在,你要做的第一件事就是找到第一个大于或等于最小数的数字,并且它的所有数字都是成对的。如果初始数字有一个不成对的数字,那么它需要增加到下一对数字。如果数字不是最后一位,则其后面的所有其他数字将变为0值。一旦有了第一个有效数字,就可以重复打印当前有效数字,并将最后一个数字增加两个,直到最后一个数字达到结束数字或0。如果你到达最后一个号码,你的例行程序就结束了。如果你没有到达最后一个数字,那么你的最后一个数字是0,倒数第二个数字增加2。处理倒数第二个数字和处理最后一个数字一样。在

问题是在python3中/执行浮点除法,而不是floor除法。将t /= 10更改为t //= 10。在

在Python2中,3 / 4=>;0。在python3中,3 / 4=>;0.753 // 4=>;0。你的算法依赖于底数除法(或整数除法),来消除数字。在

相关问题 更多 >