首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:比较两个字符串的相同值(猜测应用程序)

Python:比较两个字符串的相同值(猜测应用程序)
EN

Stack Overflow用户
提问于 2022-06-20 17:34:22
回答 2查看 38关注 0票数 0

我正在尝试创建一个猜词的程序,它有一个单词,你输入的是‘高兴’,让我们说'heapy‘,它以H,P,Y作为X的意思,这些值是正确的(基本上是单词),O's,如果它们在单词中,但位置不对的话。

我设法创建了它们是否处于确切位置,并指出了它们之间的空格,但我很难弄清楚如何比较这两个字符串,看看它是否包含相同的字母,例如'a‘,然后将其添加到列表中,以便打印X,_ O,X,X,如果它位于正确的位置,字母根本不在那里,而O在那里,但在错误的位置。

我这部分的代码如下:

代码语言:javascript
复制
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)

我觉得我在这里很傻,但如果你们能帮我理解的话,那就太棒了

EN

回答 2

Stack Overflow用户

发布于 2022-06-20 17:48:50

用一套,看看信里有没有.与…有关的东西

代码语言:javascript
复制
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

将打印

代码语言:javascript
复制
Nothi: _____
Heapy: X_OXX
Happy: XXXXX

我没有用固定的数字索引,而是将两个单词(相同的长度)拉链在一起,这样您就可以从

代码语言:javascript
复制
"aaaa"
"1234"

元组

代码语言:javascript
复制
("a","1"), ("b","2"), ("c","3"), ("d","4")

来比较它们。

票数 0
EN

Stack Overflow用户

发布于 2022-06-20 17:53:20

您就快到了,您只需要一个elif条件来检查信中是否存在:

代码语言:javascript
复制
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'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72690929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档