【发布时间】:2022-06-15 01:09:33
【问题描述】:
有人可以帮忙处理这段代码吗,我需要它来保存排列列表和每个排列后的数字,并随机打印 20 个。
目前它仅适用于第一部分.. 它打印给定单词的排列,但我不知道要合并评论的后半部分,它必须进行计数并获取随机结果。
假设您想要“老鼠”的排列,应该出现 24 行,这应该是代码后半部分(最后 6 行)的输入。使用 sys.stdin 必须将这 24 行添加到计数列表中。每行都有一个数字 (1-24),然后随机选择其中的 20 个(导入数学,必须使用随机数)。
输入是一个词, 输出必须是 20 个随机排列。
任何建议将不胜感激,谢谢。
import sys, re
def gen_permutations(a, n):
if n == 0:
print(''.join(a))
else:
for i in range(n):
gen_permutations(a, n-1)
j = 0 if n % 2 == 0 else i
a[j], a[n] = a[n], a[j]
gen_permutations(a, n-1)
if len(sys.argv) != 2:
sys.stderr.write('one argument only\n')
sys.exit(1)
word = sys.argv[1]
gen_permutations(list(word), len(word)-1)
#counts = {}
#for line in sys.stdin:
# for word in re.findall(r'[a-z\']+', line.lower()):
# counts[word] = counts.get(word, 0) + 1
# for word, count in sorted(counts.items()):
# print (word, count)
【问题讨论】:
-
报告
counts内容的最后两行位于构建counts的循环内。您的代码不应该等到所有输入都处理完毕后再报告它吗? -
假设你想要“老鼠”的排列,应该出现 24 行,这应该是代码后半部分(最后 6 行)的输入。使用 sys.stdin 必须将这 24 行添加到计数列表中。每行都有一个数字 (1-24),然后随机选择其中的 20 个。
-
请edit 解释您的问题,而不是在评论中补充。样本输入和输出也会有所帮助。 每个列表都有一个编号:是用户提供的还是代码应该这样做?你的描述充满了被动(被给予,被选择)。避免这些会更清楚地说明需求是什么。
标签: python random permutation