Возникли проблемы с выяснением, как реализовать пробелы между словами. Прямо сейчас у меня есть подчеркивание вместо - PullRequest
0 голосов
/ 27 апреля 2018

Мой код предполагает получение фразы из файла. В настоящее время у меня это работает, но я не могу понять, как я могу изменить свой вывод. В моем выводе я подчеркиваю пробелы между словами. Я хочу, чтобы на выходе были реальные пробелы вместо подчеркивания. В моем коде каждый символ заменен на знак подчеркивания. Я думаю, что это моя проблема, потому что он читает пробелы как символы. Моя цель - с некоторой помощью выяснить, как я не могу этого избежать.

Обновление: проблема была исправлена ​​до сих пор. Теперь в конце каждой фразы есть подчеркивание. Какие-либо предложения?

    #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 Ответ

0 голосов
/ 27 апреля 2018

Один из них избавится от подчеркивания. Вы правы, что он итерирует и по пробелам.

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=' ')

Возможно, вы также хотите помешать игроку угадать пробелы.

...