python - 使用 python 编写一个程序来解决这个问题 :

标签 python python-3.x math combinations permutation

找出 6 位数字的个数,使得每个数字至少出现两次

我尝试了以下代码,但它不起作用:

count = 0
for n in range(10**5,(10**6)-1):
    n = str(n).split()
    
for i in range(len(n)):
    
    n[i] = int(n[i])
    if n.count(i) >= 2:
        
        
        count+=1
print(count)

最初的问题是排列和组合,但我想使用 python 来解决这个问题......

最佳答案

以下是您的代码中的一些错误 -

  1. 范围必须为 range(10**5, 10**6) 以涵盖所有 6 位数字
  2. str(n).split() 不会将 n 拆分为字符列表,因为数字的字符串表示形式之间没有分隔符。您可以使用[letter for letter in str(n)]来代替。
  3. 您想要对第一个循环中的每个数字运行第二个循环,因此第二个循环需要位于第一个循环内。
  4. 在第二个循环中,如果其中一位数字在数字中出现两次以上,您将增加计数,因此您最终可能会多次增加单个数字的计数。例如对于 112233,您最终会将 count 增加 3,而不是仅增加 1。

这是一个简化的代码,可以以类似的格式执行您想要的操作 -

count = 0
for n in range(10**5, 10**6):
    n = [letter for letter in str(n)]
    count += 1
    for letter in n:
        if n.count(letter) < 2:    
            count -= 1
            break

print(count)

输出 -

11754

您可以使用 all() 函数和列表理解来简化代码 -

count = 0
for n in range(10**5, 10**6):
    n = [letter for letter in str(n)]
    count += all(n.count(letter) >= 2 for letter in n)

关于python - 使用 python 编写一个程序来解决这个问题 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71029526/

相关文章:

python - 在 venv 中使用 python2.7,其中 python3 是默认 python

math - 确定一组点是否位于规则网格上

python - 如何将参数传递给已加载的 tensorflow 图(在内存中)

python - SQLAlchemy 更新插入

Python Docstring : raise vs. 引发

python - Keras:无法将输入数组从形状 (14,1) 广播到形状 (14)

python - 如何在python中转换 '22-Jul-2020 14:00 (GMT 4.30) ' "22 7 2020 "

python - 如果它不是函数,则将项目添加到列表中

php计算折扣或税

javascript - 在 Javascript 中找到距离半圆中心 n% 的点?