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

Python 检查所有单个数字在一个范围内是否为偶数,python,python-3.x,Python,Python 3.x,问题陈述: 查找m和n(均包含)之间的所有此类数字,使数字的每个数字都是偶数。第一行包含用逗号分隔的值m和n。获得的数字应以逗号分隔的顺序打印在一行上。 限制条件: 1000问题在于,在python 3中,执行浮点除法,而不是地板除法。将t/=10更改为t/=10 在Python2中,3/4=>0。在Python3中,3/4=>0.75和3//4=>0。您的算法依赖于地板除法(或整数除法)来消除数字 def all_even(number): num_str = str(number)

问题陈述: 查找m和n(均包含)之间的所有此类数字,使数字的每个数字都是偶数。第一行包含用逗号分隔的值m和n。获得的数字应以逗号分隔的顺序打印在一行上。 限制条件:
1000问题在于,在python 3中,执行浮点除法,而不是地板除法。将
t/=10
更改为
t/=10

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

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]))

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

你可以把这个数字压缩一点。首先输入,然后使用列表理解和拆分将两个数字转换为
int
。从这里,w可以使用列表理解在两个数字范围内建立一个列表,只取
而不是i%2
,这将是偶数。最后,我们可以使用分隔符解包并打印该列表。此外,我们可以添加一个while循环,并将m,n设置为0,以符合我们的限制条件

m, n = 0, 0
z = range(1000, 9001)
while m  not in z or n not in z:
    x = input()
    m, n = [int(i) for i in x.split(',')]
lst = [i for i in range(m, n + 1) if not i % 2]
print(*lst, sep=', ')
# 2000, 2002, 2004, 2006, 2008, 2010

使用列表理解python3.4 e、 g.找出1000和9001之间的数字,每个数字都是偶数

1。检查数字本身是否为偶数
2。如果是,则迭代该数字的每个数字,检查其是否为偶数 3。它的长度应等于数字的长度

输出:
[2000年、2002年、2004年、2006年、2008年、2020年、2022年………888082888848488888]


我找到了一个更简单的方法! 通过理解它的数学关系而不是编写复杂的程序来解决它

even_digits= []
for x in range(1000,9000):
        if int(x) % 2 == 0  and int(x) % 20 < 10 and int (x) % 200 < 100 and int (x) % 2000 < 1000:
            even_digits.append(str(x))
print (','.join(even_digits))

如果数字的每个数字都是偶数,为什么2010应该在输出中?我不明白为什么在你的范围内有两个迭代器(一段时间和一段时间)。一个就够你想要的了。两者兼用只会让一切变得复杂。您所要做的就是遍历您的范围,并测试您当前的索引是否可以被2整除,并且没有余数(使其为偶数)。您还可以删除简单join()语句的最后五行,该语句将列表转换为具有给定分隔符的字符串。欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南,并在这里申请。首先,让我们更容易帮助你。使用无意义的变量名会损害程序的可读性。此外,您还没有尝试跟踪数据和控制流。请看这个可爱的博客寻求帮助。这里也有一些禁忌
 [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))]
even_digits= []
for x in range(1000,9000):
        if int(x) % 2 == 0  and int(x) % 20 < 10 and int (x) % 200 < 100 and int (x) % 2000 < 1000:
            even_digits.append(str(x))
print (','.join(even_digits))
2000,2002,2004,2006,2008,2020,2022,2024,2026,2028,2040,2042,2044,2046,2048,2060,2062,2064,2066,2068,2080,2082,2084,2086,2088,2200,2202,2204,2206,2208,2220,2222,2224,2226,2228,2240,2242,2244,2246,2248,2260,2262,2264,2266,2268,2280,2282,2284,2286,2288,2400,2402,2404,2406,2408,2420,2422,2424,2426,2428,2440,2442,2444,2446,2448,2460,2462,2464,2466,2468,2480,2482,2484,2486,2488,2600,2602,2604,2606,2608,2620,2622,2624,2626,2628,2640,2642,2644,2646,2648,2660,2662,2664,2666,2668,2680,2682,2684,2686,2688,2800,2802,2804,2806,2808,2820,2822,2824,2826,2828,2840,2842,2844,2846,2848,2860,2862,2864,2866,2868,2880,2882,2884,2886,2888,4000,4002,4004,4006,4008,4020,4022,4024,4026,4028,4040,4042,4044,4046,4048,4060,4062,4064,4066,4068,4080,4082,4084,4086,4088,4200,4202,4204,4206,4208,4220,4222,4224,4226,4228,4240,4242,4244,4246,4248,4260,4262,4264,4266,4268,4280,4282,4284,4286,4288,4400,4402,4404,4406,4408,4420,4422,4424,4426,4428,4440,4442,4444,4446,4448,4460,4462,4464,4466,4468,4480,4482,4484,4486,4488,4600,4602,4604,4606,4608,4620,4622,4624,4626,4628,4640,4642,4644,4646,4648,4660,4662,4664,4666,4668,4680,4682,4684,4686,4688,4800,4802,4804,4806,4808,4820,4822,4824,4826,4828,4840,4842,4844,4846,4848,4860,4862,4864,4866,4868,4880,4882,4884,4886,4888,6000,6002,6004,6006,6008,6020,6022,6024,6026,6028,6040,6042,6044,6046,6048,6060,6062,6064,6066,6068,6080,6082,6084,6086,6088,6200,6202,6204,6206,6208,6220,6222,6224,6226,6228,6240,6242,6244,6246,6248,6260,6262,6264,6266,6268,6280,6282,6284,6286,6288,6400,6402,6404,6406,6408,6420,6422,6424,6426,6428,6440,6442,6444,6446,6448,6460,6462,6464,6466,6468,6480,6482,6484,6486,6488,6600,6602,6604,6606,6608,6620,6622,6624,6626,6628,6640,6642,6644,6646,6648,6660,6662,6664,6666,6668,6680,6682,6684,6686,6688,6800,6802,6804,6806,6808,6820,6822,6824,6826,6828,6840,6842,6844,6846,6848,6860,6862,6864,6866,6868,6880,6882,6884,6886,6888,8000,8002,8004,8006,8008,8020,8022,8024,8026,8028,8040,8042,8044,8046,8048,8060,8062,8064,8066,8068,8080,8082,8084,8086,8088,8200,8202,8204,8206,8208,8220,8222,8224,8226,8228,8240,8242,8244,8246,8248,8260,8262,8264,8266,8268,8280,8282,8284,8286,8288,8400,8402,8404,8406,8408,8420,8422,8424,8426,8428,8440,8442,8444,8446,8448,8460,8462,8464,8466,8468,8480,8482,8484,8486,8488,8600,8602,8604,8606,8608,8620,8622,8624,8626,8628,8640,8642,8644,8646,8648,8660,8662,8664,8666,8668,8680,8682,8684,8686,8688,8800,8802,8804,8806,8808,8820,8822,8824,8826,8828,8840,8842,8844,8846,8848,8860,8862,8864,8866,8868,8880,8882,8884,8886,8888