Python:比较两个字符串的相同值(猜app)



我正在尝试创建一个猜单词的程序,它有一个单词,比如'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'))

最新更新