问题陈述: 找到介于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
但是我没有得到任何输出。我的程序出了什么问题?
答案 0 :(得分:2)
问题是在python 3 /
中执行浮点除法,而不是地板除法。将t /= 10
更改为t //= 10
。
在Python2中,3 / 4
=> 0
。在Python 3中,3 / 4
=> 0.75
和3 // 4
=> 0
。而且您的算法依赖于底数除法(或整数除法)来消除数字。
答案 1 :(得分:1)
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]))
答案 2 :(得分:0)
您的起始号码和结束号码都有数字。有效数字为0、2、4、6、8。现在,您需要做的第一件事是找到大于或等于最小数字的第一个数字,并且所有数字都是成对的。如果初始号码有不成对的数字,则需要将其增加到下一个成对的号码。如果该数字不是最后一位,则其后的所有其他数字将变为0值。一旦有了第一个有效数字,就可以重复打印当前有效数字,并将最后一位数字增加两位,直到到达结尾数字或最后一位数字为0。如果到达最后一个数字,则例程结束。如果未达到最后一个数字,则最后一个数字为0,倒数第二个增加2。您处理倒数第二个数字时要处理最后一位数字。
答案 3 :(得分:0)
您可以稍微安静一下。首先输入您的输入,然后将 list comprehension 与split一起使用,将两个数字转换为ints
。从这里开始,w可以使用 list comprehension 在两个数字的范围内建立一个列表,只需要取not 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
答案 4 :(得分:0)
使用列表推导python3.4 例如查找介于1000和9001之间的数字,并且每个数字都为偶数
1。检查数字本身是否为偶数
2。如果是,则遍历该数字的每个数字以检查其偶数是否是偶数
3。它的长度应等于数字的长度
def generator2iterator(generator, length=None):
class Iterator(object):
def __iter__(self):
for i, e in enumerate(generator(), 1):
self._len = i
yield e
#self.__len__ = types.MethodType(lambda self: i, self)
def __len__(self):
if not hasattr(self, '_len'):
raise TypeError("object of type 'Iterator' has no defined len() yet.")
return self._len
return Iterator()
# examples:
## define a generator with 10 elements
def g():
for i in range(10):
yield i
# pass it to the iterator
it = generator2iterator(g)
# check len
len(it)
TypeError: object of type 'Iterator' has no defined len() yet.
# run the iterator
for _ in it:
pass
# check the length
len(it)
# returns:
10
输出:
[2000,2002,2004,2006,2008,2020,2022,....... 8880,8882,8884,8886,8888]
答案 5 :(得分:0)
我找到了一种更简单的方法! 通过了解其数学关系而不是编写复杂的程序来解决它!
$(function() {
$.contextMenu({
selector: '.context-menu-one',
callback: function(key, options) {
var m = "clicked: " + key;
window.console && console.log(m) || alert(m);
},
items: {
"edit": {name: "Edit", icon: "edit"},
"cut": {name: "Cut", icon: "cut"},
copy: {name: "Copy", icon: "copy"},
"paste": {name: "Paste", icon: "paste"},
"delete": {name: "Delete", icon: "delete"},
"sep1": "---------",
"quit": {name: "Quit", icon: function(){
return 'context-menu-icon context-menu-icon-quit';
}}
}
});
$('.context-menu-one').on('click', function(e){
console.log('clicked', this);
})
这是结果:
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))