我正在开发一款名为“我会猜出您想到的名字”或“猜我的名字”的游戏。 用户将输入一个字母,程序将尝试在python中使用“ for循环”来猜测字母的位置:
list_of_names = [ ]
userinput_letter = input('QUESTION : write a letter the name has: ')
new_list_of_names = [ ]
for names in list_of_names :
if userinput_letter in list_of_names :
new_list_of_names.append(names)
randomname = random.choice(new_list_of_names]
position_of_userletter = randomname.find(userinput_letter)
yn = input('QUESTION : does this letter "'+ userinput_letter +'" in the position "'+ str(position_of_userletter ) +'" (yes/no): ' )
if (yn == 'yes') :
newlist_ofnames = [ ]
for namesyes in new_list_of_names:
if ( namesyes in userinput_letter [position_of_userletter] ) :
newlist_ofnames.append(namesyes)
print(newlist_ofnames)
IndexError:字符串索引超出范围
答案 0 :(得分:0)
据我了解,userinput_letter
只是一个字母,您正在尝试获取一些索引。这就是为什么您会出错。
您应该做些类似的事情
if (len(namesyes) => position_of_userletter and namesyes[position_of_userletter] == userinput_letter):
答案 1 :(得分:0)
首先,在第5行上,您应该放置名称而不是list_of_names。
第二,您应该放置一个循环,如果yn等于“ no”,该循环将重新运行随机选择。
然后代替此行:
if ( namesyes in userinput_letter [position_of_userletter] ) :
放置此行:
if (namesyes[postition_of_userletter]== userinput_letter):
希望它能起作用:)