Skip to main content
 首页 » 编程设计

python之CodeHS 8.3.8 : Word Ladder 我还需要什么

2025年05月04日12三少

这是我应该做的:

你的 friend 想尝试做一个字梯!这是一个单词列表,其中每个单词与其前面的单词有一个字母的差异。这是一个例子:

cat 
cot 
cog 
log 

编写一个程序来帮助你的 friend 。它应该执行以下操作:

  • 请您的 friend 先说一句。
  • 反复要求他们提供索引和一封信。
  • 您应该用他们输入的字母替换他们提供的索引处的字母。
  • 然后您应该打印新单词。
  • 当用户为索引输入 -1 时停止要求输入。

这是幕后应该发生的事情:

  • 您应该有一个函数 get_index,它会反复询问用户一个索引,直到他们输入一个有效整数,该整数在初始字符串的可接受索引范围内。 (如果他们输入的数字超出范围,你应该输出invalid index。)
  • 您应该有另一个函数,get_letter,它反复要求用户输入一个字母,直到他们正好输入一个小写字母。 (如果他们输入多个字符,你应该输出 Must be exactly one character!。如果他们输入大写字母,你应该输出 Character must be a lowercase letter! .)
  • 您应该将当前单词的列表版本存储在一个变量中。这是每次用户换出新字母时您应该更新的内容。
  • 每次您必须打印当前单词时,打印您保存在变量中的列表的字符串版本。

以下是您的程序运行示例:

Enter a word: cat 
Enter an index (-1 to quit): 1 
Enter a letter: o 
cot 
Enter an index (-1 to quit): 2 
Enter a letter: g 
cog 
Enter an index (-1 to quit): 5 
Invalid index 
Enter an index (-1 to quit): -3 
Invalid index 
Enter an index (-1 to quit): 0 
Enter a letter: L 
Character must be a lowercase letter! 
Enter a letter: l 
log 
Enter an index (-1 to quit): -1 

这是我现在的代码:

word = input("Enter a word: ") 
for i in range(): 
    get_index = int(input("Enter an index (-1 to quit): ")) 
    if get_index < -1: 
        print "Invalid index" 
    elif get_index > 3: 
        print "Invalid index" 
    else: 
        letter = input("Enter a letter: ") 
        word = word[:get_index] + letter + word[get_index + 1:] 
        print word 

所以我不完全确定如何为所有大写字母制作一个 if/else 语句并且只允许一个字母。我也不确定我需要在我的 for 循环中放入什么以使其在我输入 -1 时结束。

请您参考如下方法:

Word Ladder 应继续运行并继续打印结果,直到索引为 -1。这是一个快速解决方案。


玩字梯

def get_index(word): 
    while True: 
        try: 
            pos = int(input("Enter an index: ")) 
            if pos == -1: 
                return pos 
            elif pos >= len(word): 
                print "invalid index" 
            elif pos <= -1: 
                print "invalid index" 
            else: 
                return pos 
        except ValueError: 
            print "invalid index" 
             
def get_letter(): 
     
    while True: 
         
        char = str(input("Enter a letter: ")) 
     
        if char.islower() and len(char)==1: 
            return char 
     
        elif  not char.islower():   
            print "Character must be a lowercase letter!" 
   
        elif len(char) > 1: 
            print "Must be exactly one character!" 
 
def word_ladder(word): 
     
    while True: 
        pos = get_index(word) 
        if pos == -1: 
            return 
        else: 
            char=get_letter()  
             
            word = list(word) 
            word[pos] = char 
            word = ("").join(word) 
            print word 
 
word = input("Enter a word: ")  
 
word_ladder(word)