这是我应该做的:
你的 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)
