繁体   English   中英

如何将用户输入与列表中的大写字母字符串进行比较?

[英]How do I compare user input to an uppercase letter string in a list?

首先,请原谅我的英语。 这是我的第二语言。

我正在尝试完成一个hang子手游戏。

这是我的粗略代码:

WORDS_LIST = ["I do not know"]

answer = list(random.choice(WORDS_LIST))

for char in answer:
    if (char.isalpha()):
        list1.append(char)
    else:
        list1.append("")

for char in list1:
    if char == "":
        guess_box.append(" ")
    else:
        guess_box.append("_")

print(' '.join(guess))

player_choice = input("\nguess a letter: ")

for item in range(0, len(ANSWER)):
    if ANSWER[item] == player_choice:
        guess_box[item] = player_choice
    elif ANSWER[item][0] == player_choice[0]:
        guess_box[item] = player_choice.upper()

如您所见,此打印出了图案

_  _ _  _ _ _  _ _ _ _

我的大写字母有问题。 我不确定如何将用户输入与列表中的单个大写字母进行比较。 请帮我弄清楚,有人吗?

示例输出:

I do not know

当评论发送时,您可以使用char.lower()但是我看到了其他一些可以帮助您的内容,因此这里有更多提示和窍门。

首先,您可以使用列表理解来创建列表,因为它更短并且很容易阅读。

import random

WORDS_LIST = ["I do not know"]

# A list of characters
answer = list(random.choice(WORDS_LIST))

# A set of all the letters (converted to lowercase) that are contained 
# in the answer. sets are significantly faster to search through.
letters = {char.lower() for char in answer if char.isalpha()}
guessed_letters = set()

# Note the syntax used above and here. This is called list
# comprehension.
# This is the same as:
# guess_box = []
# for char in answer:
#     if char.isalpha():
#         guess_box.append("_")
#     else:
#         guess_box.append(char) # Just use the space.
guess_box = ["_" if char.isalpha() else char for char in answer]

然后,您可以处理输入逻辑:

print(' '.join(guess_box))
player_choice = input("\nguess a letter: ")

while player_choice:
    print(f"You chose: {player_choice}")
    # Convert user input to lower case
    player_choice = player_choice.lower()
    # If this letter was guessed before:
    if player_choice in guessed_letters:
        print("You guessed this letter already.")
    else:
        guessed_letters.add(player_choice)

        # Check if this choice is in our word
        if player_choice in letters:
            # If we have this letter then change
            # the guess_box
            for index, val in enumerate(answer):
                # Of the user input
                if val.lower() == player_choice:
                    guess_box[index] = val
        else: # The letter is wrong
            print("That letter didn't fit")

    print(' '.join(guess_box))
    player_choice = input("\nguess a letter: ")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM