如何统计指定区间内各位数字不重复的数字数量?
解决方法
你可以通过添加一个计数器变量来统计符合条件的数字数量,同时还能简化原代码的冗余部分:
count = 0 # 初始化计数器 for n in range(234, 567): s = str(n) # 利用集合去重特性:如果字符串长度和集合长度相等,说明无重复数字 if len(s) == len(set(s)): print(n) count += 1 # 符合条件则计数器加1 print(f"符合条件的数字总数:{count}")
关键修改说明:
- 去掉了不必要的
list存储所有数字,直接遍历range更高效 - 用
set(s)替代原有的逐位比较逻辑,代码更简洁且适用于任意位数的数字(不止三位数) - 添加
count变量,每次找到符合条件的数字就自增,最后输出总数
如果你想保留原有的逐位比较逻辑,也可以这样修改原代码(注意修正原判断逻辑的漏洞):
count = 0 num_list = [] for i in range(234,567): num_list.append(i) for n in num_list: x=[int(a) for a in str(n)] # 修正判断逻辑:确保三个数字两两不等 if x[0] != x[1] and x[1] != x[2] and x[0] != x[2]: print(n) count += 1 print(f"总数:{count}")
内容的提问来源于stack exchange,提问作者Ahmed Othman Gad
相关产品推荐
相关产品推荐

