生成指定字母范围的三字母组合时输出缺失问题排查
修复三字母全组合生成代码的缺失问题
你当前代码遗漏组合的原因是第三个循环的范围写错了——第三个循环range(ord('a'), j + 1)把k的取值限制在了不大于j的范围内,这就导致当j是a时,k只能取a,自然生成不了aab、bab这类k大于j的组合。
修正后的代码如下:
import string letter = input("Enter letter: ") # 生成从a到输入字母的所有三字母组合 for i in range(ord('a'), ord(letter) + 1): for j in range(ord('a'), ord(letter) + 1): for k in range(ord('a'), ord(letter) + 1): print(chr(i), chr(j), chr(k))
修正后三个循环的范围完全一致,每一位字母都能独立遍历从a到目标字母的所有字符,这样就能生成所有可能的三字母组合。比如输入b时,会输出aaa、aab、aba、abb、baa、bab、bba、bbb这8种正确结果。
内容的提问来源于stack exchange,提问作者Yanru Shin
相关产品推荐
相关产品推荐

