我正在尝试创建一个猜单词的程序,它有一个单词,比如'happy',你输入'heapy',它将H, p, Y作为X的值,这意味着这些值是正确的(基本上是世界)和O,如果它们在单词中,但不是正确的位置。
我已经设法创建,如果他们是在确切的位置或不是,并指出那些不是之间的空间,但我有麻烦弄清楚如何比较两个字符串,看看它是否包含任何相同的字母,例如'a',然后将其添加到列表,所以它会打印X, _ O, X, XX在正确的位置因为那封信根本不在那儿如果它在那里,但在错误的地方。
我对这部分的代码如下:
target = "Happy"
guess = "Heapy"
# Part 1 of 3
lst = []
name = ""
targetCount = 0
while targetCount < 5:
# print(guess[counter])
if guess[targetCount] == target[targetCount]:
print("X")
lst.append(guess[targetCount])
else:
print(".")
lst.append(".")
targetCount += 1
print("---------------------------------")
for x in lst:
print(x)
print("Next: ---------------------------------")
# Part 2 of 3
targetCount = 0
yCount = 0
List = 0
guess_index = []
# index of the two '.' in word
for List in range(len(lst)):
if lst[List] == ".":
guess_index.append(List)
print(List)
我觉得我在这里很傻,但如果你们能帮我理解,那将是惊人的<3
使用集合并检查该字母是否在其中…
之类的东西target = "Happy"
guesses = ["Nothi", "Heapy", "Happy"]
lst = []
letters = set(target)
for guess in guesses:
print (guess,": ", *["X" if a==b else # identical
"O" if b in letters else # somewhere in word
"_" for a,b # not in word
in zip(target, guess)], sep="") # for all letter-tuples
将打印
Nothi: _____
Heapy: X_OXX
Happy: XXXXX
不是按固定的数字进行索引,而是将两个长度相同的单词压缩在一起,因此您可以从
得到"aaaa"
"1234"
元组
("a","1"), ("b","2"), ("c","3"), ("d","4")
来比较它们
差不多了,你只需要一个elif
条件来检查字母的存在:
def evaluate(target, guess):
result = list()
for i, c in enumerate(guess):
if c == target[i]:
result.append('X')
elif c in target:
result.append('O')
else:
result.append('_')
return ''.join(result)
print(evaluate('happy', 'heapy'))