python - 代码随机不遵循 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 。我的代码怎么了?
更多信息:
- 文本编辑器:Visual Studio Code
- Python版本:Python 3.7.3
解决方案
我不完全理解您的程序试图实现的目标,但是我确实看到了您所看到的行为问题
您的问题在于您如何检查第一个元素
请注意,这一行正在检查元素是否为 == 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)
推荐阅读
- arrays - 如何将 numpy 数组转换为 Zarr 数组
- python - 如何检查给定对象列表中每种不同类型的对象是否具有可比性?
- reactjs - 是否可以将对象中函数的流类型动态设置为其属性之一的类型?
- python - 如何在 Abaqus/Python scipting 中从 CSV 文件中读取数据
- html - 当它们处于同一级别时将scss添加到html
- c# - 无法使用 Microsoft.Graph 发送电子邮件
- javascript - Set node-fetch parameter dynamically
- php - 如何使用 PHP 从文件中读取并写入文本文件
- android - 返回 Activity 传递意图
- python-3.x - 带有 keras tensorflow 的多输入生成器