我正在创建一个子手游戏,遇到了我似乎无法解决的问题。以下是我输入正确字母的代码:
for i, l in enumerate(answer):
if l == attempt:
temp += attempt
else:
temp += hidden[i]
print(F"Correct! You have {lives} lives left")
print(temp)
返回:(答案为双工)
duplex
Guess a letter: x
Correct! You have 5 lives left
-----x
但是,当添加第二个输入时,它将打印第二个串联的字符串,而不是更新的字符串。
Guess a letter: e
Correct! You have 5 lives left
-----x----e-
Guess a letter:
我在哪里错了?谢谢!
答案 0 :(得分:0)
我认为您不希望连续添加到temp
字符串,而是要在猜测时替换其特定字母。我还建议给它起一个比temp
更好的名称!
visible = ["-"] * len(answer)
# now for each attempt, do:
if attempt in answer and attempt not in visible:
print(f"Correct! You have {lives} lives left")
for i, l in enumerate(answer):
if l == attempt:
visible[i] = attempt
print("".join(visible))
答案 1 :(得分:0)
问题隐藏了。在代码中,您发布的代码不会将用户输入添加到此数组中。因此隐藏永远不会改变。在正确的尝试范围内尝试hidden[i]=attempt
。看起来应该像这样。
for i, l in enumerate(answer):
if l == attempt:
temp += attempt
hidden[i]=attempt
else:
temp += hidden[i]
print(F"Correct! You have {lives} lives left")
print(temp)
在python中,字符串具有函数find,该函数返回字符串中子字符串的索引。它可以使您的代码更简洁。
index = answer.find(attempt,0)
if(index>0):
hidden[index] = attempt
print(hidden)