我需要打印列表中没有相同数字(例如: 22,33 )的所有数字。
x,y=list(map(int,input().split()))
l=[]
m=[]
for i in range(x,y+1):
l.append(i)
for j in range(0,len(l)):
unit = l[j] % 10
while (l[j] != 0):
curr = l[j] %10
l[j]=l[j]//10
if(curr != unit):
m.append(l[j])
print(m)样本输入:10,20
样本输出:10,12,13,14,15,16,17,18,19,20 (11被删除)
我的输出:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
发布于 2022-09-20 03:00:13
根据输入和输出的示例,要删除具有相同数字的数字。
因此,解决办法如下:
x, y = list(map(int,input().split()))
ans = []
for i in range(x, y + 1):
list_num = list(str(i))
if list_num.count(str(i % 10)) != len(str(i)):
ans.append(i)
print(*ans)发布于 2022-09-20 03:09:54
range()返回一个迭代器。您不关心以前或将来的数字,所以您不需要存储除输出之外的任何列表。
专注于孤立你的逻辑。一个数字拥有相同的数字意味着什么?例如,如果您唯一地计数所有数字为1,那么您就有相同的数字。使它成为一种功能
from collections import defaultdict
def all_same(x):
vals = defaultdict(int)
while x != 0:
x, tens = divmod(x, 10)
vals[tens] += 1
return len(vals) == 1
x, y = list(map(int,input().split()))
print(','.join( str(v) for v in range(x, y + 1) if not all_same(v) ))发布于 2022-09-20 03:14:33
x, y = list(map(int, input().split()))
result = []
for i in range(x, y+1):
counts = [0] * 10
n = i
while n > 0:
n, remainder = divmod(n, 10)
counts[remainder] += 1
if max(counts) == 1:
result.append(i)如果允许将数字转换为字符串,则可以这样做。
result = [n for n in range(x, y + 1) if len(str(n)) == len(set(str(n)))]https://stackoverflow.com/questions/73781041
复制相似问题