我该怎么做这个特定的替换

时间:2016-02-01 17:59:39

标签: python python-3.x

string = input("Enter a string:")
character = input ("Enter a character:")
if character in string: #checks string to see if character is in it
    print ("Character found!")
else:
    print ("Character not found!")

blank = (" _ " * len(string))
print (blank)

我正在制作一个刽子手游戏,我被困在这一部分。

我怎样才能做到这一点,当这个人猜到一封信时,它会取代特定的" _"信应该在哪里?我是否应该使用for循环来完成所有" _" '然后使用if语句?

如果有人能告诉我它会有多棒。

2 个答案:

答案 0 :(得分:0)

每次播放器猜到某些内容时,您都可以使用类似以下的方法更新猜测字符串。

def update_guesses(current_guess_string, key_string, character_guessed):
    out_string = ""
    for i in range(len(current_guess_string)):
        if current_guess_string[i] == "_" and key_string[i] == character_guessed):
            out_string += character_guessed
        else: out_string += current_guess_string[i]
    return out_string

答案 1 :(得分:0)

在您的代码的基础上,这里有一组可以让您进入正常工作游戏的更改:

将字符串输入设置为固定大小写,并将空白初始化移至字符串输入后。将它们更改为列表,以便您可以修改 他们根据需要:

# normalize case and convert to a mutable data structure
string = list(input("Enter a string: ").lower())

# the blank list matches the string except it starts all blanks
blank = list("_" * len(string))

获取处理猜测的循环。在这里我停止循环,当字符串列表是一个字符,可能是空白,因为我们将在空白和输入字符串列表之间交换字符:

while len(set(string)) > 1:  # when the string is all blanks, stop

确保将用户输入清除为仅一个字符,并将其更改为与字符串输入相同的大小写:

    # normalize case on input and make sure to only get 1 character
    character = input("Enter a character: ").lower()[0]

在测试字符是否在字符串中后,按位置将字符与空字符串中的字符交换。在循环中执行此操作,以便获得猜测字符的所有实例:

     if character in string:  # checks string to see if character is in it
         print("Character found!")
         # find the character in the string and swap it with what's in
         # the blank string so we can handle multiple same characters
         # correctly
         while character in string:
            index = string.index(character)
            string[index] = blank[index]
            blank[index] = character

     else:
         print("Character not found!")

主循环的最后一步是打印猜测的当前状态:

     # print correct guesses and blanks
     print(*blank, sep='')