首页 > 解决方案 > 代码随机不遵循 For Loop 的指令

问题描述

我正在尝试创建一个使用阶乘查找可能配置数量的程序。到目前为止,这是我的代码:

from collections import Counter
letters = []
lettnum = []
trash = []
booleans = []
boolet = {}
def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n - 1)

word = input("Word: ")
x = fact(len(word))
for char in word:
    letters.append(char)

z = Counter(letters)
y = list(z.values())
ans = "print("
print(letters)
print(y)

for element in y:
    if y[0] == element:
        ans = ans + str(fact(element))
    else:
        ans = ans + "*" + str(fact(element))
ans = ans + ")"
print(ans)

如果你输入这个词tool,它应该给出一个答案

print(1*2*1)

而是打印出来

print(1*1*21*1)

我注意到它结合了 2 和 1 而没有添加 a *,而且它还1毫无理由地添加了 random 。我的代码怎么了?

更多信息:

标签: pythonpython-3.xfor-loop

解决方案


我不完全理解您的程序试图实现的目标,但是我确实看到了您所看到的行为问题

您的问题在于您如何检查第一个元素

请注意,这一行正在检查元素是否为 == 1

    if y[0] == element:

最后一个元素也是 1 所以它沿着相同的路径

一个解决方案是像这样编写循环

ans = "print(" + str(fact(y[0]))

for element in y[1:]:
        ans += "*" + str(fact(element))
ans = ans + ")"
print(ans)

推荐阅读