代码之家  ›  专栏  ›  技术社区  ›  Isiah Jones

在计算单词之间的空格时遇到困难。现在我用下划线代替

  •  0
  • Isiah Jones  · 技术社区  · 6 年前

    我的代码假设是从文件中提取一个短语。我目前正在使用它,但我似乎不知道如何更改输出。在我的输出中,我用下划线表示单词之间的空格。我希望输出具有实际的空格,而不是下划线。在我的代码中,我将每个字符替换为下划线。我认为这是我的问题,因为它也是将空格作为字符来读取的。我的目标是在得到一些帮助的情况下,找出我无法阻止这种情况发生的方法。

    更新:问题已修复。现在每个短语的末尾都有一个下划线。有什么建议吗?

        #Define a filename
    filename = "puzzles.txt".lower()
    
    #Imports
    import random
    
    #Open the file and read
    with open(filename) as f:
        lines = f.readlines()
        randomSecretPhrase = (random.choice(lines)) #Choose random phrase from file
        #***Output secret word to screen test***
        print(randomSecretPhrase)
    
    #Initalize        
    correct = []
    incorrect = []
    guesses = []
    count = 0
    
    def game():
        for i in randomSecretPhrase:
            if i in correct:
                print(i,end=' ')
            elif i != ' ':
                print('_',end=' ')
            else:
                print(' ',end=' ')
        print("\n\n")
        print('Number of times guessed: ', count)
        print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
    
    def guessed_letters():
    #Will check the user input to verify valid letter is entered
        while True:
            guess = input("Guess a letter: ").lower()
            if guess in correct or guess in incorrect:
                print("You have already guessed that letter. Please guess again.")
                print(count)
            elif guess.isnumeric():
                print("Please enter only letters not numbers! Guess again.")
            elif len(guess) > 1:
                print("Please enter only one letter at a time. Please guess again.")
            elif len(guess) == 0:
                print("Please enter a letter.")
            else:
                break
    
    #Keep track of correct and incorrect guesses
    
        if guess in randomSecretPhrase:
            correct.append(guess)
            print('~~~~~~~~~~~~~~~~~~~~~~~~')
            print("You have guessed correctly!")
            print('\n')
        else:
            print('~~~~~~~~~~~~~~~~~~~~~~~~')
            incorrect.append(guess)
            print("You have guessed incorrectly!")
            print('\n')
    
    #Main program
    while True:
        #Call game()
        game()
        #Call guessed_letters()
        guessed_letters()
        #Count how many times guesses
        count += 1
    
    
    
    
    
    
    Output:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Guess a letter: h
    ~~~~~~~~~~~~~~~~~~~~~~~~
    You have guessed correctly!
    
    
    b a c k   i n   a   f l a s h _ 
    
    
    Number of times guessed:  10
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Matt M    6 年前

    其中一个将去掉下划线。您是正确的,它也在空间上迭代。

    def game():
    for i in randomSecretPhrase:
        if i in correct:
            print(i,end=' ')
        elif i in string.ascii_letters:
            print('_',end=' ')
        else:
            # Print an extra space between words
            print(' ')
    

    或者,如果您不想在单词之间留有额外的空格,您可以:

    def game():
    for i in randomSecretPhrase.replace(' ', ''):
        if i in correct:
            print(i,end=' ')
        elif:
            print('_',end=' ')
    

    您可能还希望防止玩家猜测空格。