首页 > 解决方案 > 我收到 TypeError: list indices must be integers or slices, not float for this code

问题描述

a=100
count=0
b=105
for i in range(a,b+1):
    visited=[0 for i in range(0,10)]
    num=i
    while(num):
        x=num%10
        if (visited[x]):
            break
        visited[num%10]=1
        num=num/10
    if num==0:
        count+=1
if count==0:
    print("No unique number")
else:
    print(count)

'''唯一数字是指一个数字中没有两个相同的数字'''我尝试实现此代码,但我一直收到类型错误

标签: python

解决方案


好吧,如果您使用list comprehension.

该部分生成从到的num for num in range(100, 106)所有整数,同时检查是否所有数字都出现在大多数时间,这是在从 的字符串表示中构造一个数字之后完成的,这些数字是使用模块中的 计算的。100105ifnum1listnumCountercollections

from collections import Counter
count = [num for num in range(100, 106) if all(x <= 1 for x in Counter(list(str(num))).values())]
print(count)

输出:

[102, 103, 104, 105]

推荐阅读