这是我应该做的:
您的朋友想尝试制作单词阶梯!这是单词列表,其中每个单词与之前的单词有一个字母的差异。这是一个示例:
cat
cot
cog
log
编写一个程序来帮助您的朋友。它应该执行以下操作:
请您的朋友输入一个初始单词。 反复要求他们索要索引和一封信。 您应该用输入的字母替换它们提供的索引处的字母。 然后,您应该打印新单词。 当用户为索引输入-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 = str(input("your word: "))
print(word)
run = True
while run:
#ensure he enters a number not letter
while True:
try:
get_index = int(input("enter index: "))
break
except:
print("Character must be a lowercase letter!")
#check to see if the index is within the provided word lenght
while -1 < get_index < len(word):
#doesn't matter if he enters an uppercase letter becasue the lowermethod will turn it to lowercase
get_letter = str(input("enter letter: ")).lower()
#check to ensure he provides one letter only
while len(get_letter) == 1:
word = word[:get_index] + get_letter + word[get_index + 1 :]
print(word)
break
else:
print("Must be exactly one character!")
break
else:
#quits if the index is -1
if get_index == -1:
run = False
#if the index not -1 not in the length of the word ,prints invalid
else:
print("Invalid index")
此代码中没有错误。但是,由于某种原因,它没有通过自动分级器。我相信这是因为它会自动将大写字母更改为小写字母,这是不应该的。但是,我不知道该如何解决。