所以我有一个作业:
您的朋友想尝试制作单词阶梯!这是单词列表,其中每个单词与之前的单词有一个字母的差异。这是一个示例:
猫 婴儿床 齿轮 日志 编写程序以帮助您的朋友。
它应该执行以下操作:
问你的朋友一个缩写词
反复要求他们提供索引和字母
您应该使用输入的字母替换其提供的索引处的字母,然后打印新单词
当用户输入-1作为索引时,停止询问输入
这是幕后应该发生的事情:
您应该具有get_index函数,该函数反复要求用户提供索引,直到他们输入的有效整数在初始字符串的索引可接受的范围内。 (如果他们输入的数字超出范围,则应回复无效的索引。)
您应该有另一个函数get_letter,该函数反复要求用户输入一个字母,直到他们输入的是一个小写字母。 (如果他们输入多个字符,则应答复必须正好是一个字符!。如果输入大写字母,则应答复字符必须为小写字母!。)
您应将当前单词的列表版本存储在变量中。每当用户换出新字母时,都应该更新此信息。
每次必须打印当前单词时,请打印保留在变量中的列表的字符串版本。
我尝试过重写,研究甚至调试模式。
def get_index():
while True:
index_in = int(input("Enter a number between 0 and " + str(len(string) - 1) + ": "))
if index_in > len(string) or index_in < -1:
print "Invalid Index"
elif index_in == -1:
return False
else:
get_letter(index_in)
def get_letter(index):
global string
char_list = list(string)
while True:
letter = input("Enter a letter: ")
if letter.isupper():
print "Character must be lower case!"
else:
char_list[index] = letter
string = ('').join(char_list)
break
print string
string = input("Enter a word: ")
get_index()
该程序的示例应如下所示:
输入一个字:猫
输入索引(-1退出):1
输入字母:o
cot
输入索引(-1退出):2
输入字母:g
齿轮
输入索引(-1退出):5
无效的索引
输入索引(-1退出):-3
无效的索引
输入索引(-1退出):0
输入字母:L
字符必须是小写字母!
输入字母:l
日志
输入索引(要退出则为-1):-1
答案 0 :(得分:-1)
您的代码看起来很完美! 只需根据(python 3)进行一些更改
def get_index():
while True:
index_in = int(input("Enter a number between 0 and " + str(len(string) - 1) + " (-1 to quit): "))
if index_in > len(string) -1 or index_in < -1:
print("Invalid Index")
elif index_in == -1:
return False
else:
get_letter(index_in)
def get_letter(index):
global string
char_list = list(string)
while True:
letter = input("Enter a letter: ")
if letter.isupper():
print("Character must be lower case!")
else:
char_list[index] = letter
string = ('').join(char_list)
break
print(string)
return
string = input("Enter a word: ")
get_index()
您应该使用 print(msg)代替python 3中的print msg
您错过了一个条件,请考虑这种情况,
运行程序
输入一个单词:c
输入0到0之间的数字(-1退出):1
错误
在以下行的get_index()检查中存在错误:
if index_in > len(string) or index_in < -1:
应该是:
if index_in > len(string) -1 or index_in < -1:
更新
根据评论中的讨论更新答案:
def get_index(string):
try:
while True:
index_in = int(input("Enter a number between 0 and " + str(len(string) - 1) + " (-1 to quit): "))
if index_in > len(string) -1 or index_in < -1:
print("Invalid Index")
elif index_in == -1:
return False
else:
get_letter(index_in, string)
except ValueError:
print("Please Enter a number!")
get_index(string)
def get_letter(index, string):
char_list = list(string)
while True:
letter = input("Enter a letter: ")
if letter.isupper():
print("Character must be lower case!")
else:
char_list[index] = letter
string = ('').join(char_list)
break
print(string)
return
if __name__ == "__main__":
string = input("Enter a word: ")
get_index(string)
更改为:
您必须避免使用全局变量。
相反,将特定变量传递给函数作为argumens。
注意,string
在第一个答案中的用法以及在更新后的答案中的用法。
使用try-catch块捕获意外行为