Как получить список, принимающий строчные буквы вместо заглавных букв в Hangman для рандомизированного списка в Python 3? - PullRequest
0 голосов
/ 24 мая 2018

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

import random
import urllib.request

wp = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content- 
type=text/plain"
response = urllib.request.urlopen(wp)
long_txt = response.read().decode()
words = long_txt.splitlines()

###########
# Methods #
###########
def Run():

  dashes1 = "-" * len(word) 
  dashes2 = "-" * len(word2)
  used_letter = []
  dashes = dashes1 + " " + dashes2

  #dashes ="-" * len(secretWord)
  guessesLeft = 6


  while guessesLeft > -1 and not dashes == secretWord:

    print(used_letter)
    print(dashes)
    print (str(guessesLeft))



    guess = input("Guess:")
    used_letter.append(guess)


    if len(guess) != 1:
      print ("Your guess must have exactly one character!")

    elif guess in secretWord:
      print ("That letter is in the secret word!")
      dashes = updateDashes(secretWord, dashes, guess)


    else:
      print ("That letter is not in the secret word!")
      guessesLeft -= 1

  if guessesLeft < 0:
    print ("You lose. The word was: " + str(secretWord))
    print(dashes)

  else:
    print ("Congrats! You win! The word was: " + str(secretWord))
    print(dashes)

 def updateDashes(secret, cur_dash, rec_guess):
  result = ""

  for i in range(len(secret)):
    if secret[i] == rec_guess:
      result = result + rec_guess    

    else:

      result = result + cur_dash[i]

  return result

########
# Main #
########
word = random.choice(words)
word2 = random.choice(words)
#print(word)
#print(word2)
secretWord = word + " " + word2 # can comment out the + word2 to do one 
word or add more above to create and combine more words will have to adjust 
abouve in Run()

splitw = ([secretWord[i:i+1] for i in range(0, len(secretWord), 1)])

print (splitw)
Run()

любая помощь приветствуется.На веб-сайте, который я использую, есть набор слов, которые используются для слов, генерируемых случайным образом.Некоторые из них написаны заглавными буквами, и мне нужно выяснить, как разрешить ввод буквы, скажем, заглавной A, принять строчную букву a и рассчитывать на нее.

Ответы [ 4 ]

0 голосов
/ 24 мая 2018

вы можете сравнить после преобразования всего в нижний регистр.Например, вы можете сделать

secretWord = word.lower() + " " + word2.lower() # that should make your secret all lowercase

для ввода, вы должны сделать то же самое:

guess = input("Guess:").lower()

после этого не должно иметь значения, является ли он верхним или нижним регистром.оно всегда должно совпадать, если буква правильная.надеюсь, что это поможет

0 голосов
/ 24 мая 2018

Я бы просто изменил эту строку:

while guessesLeft > -1 and not dashes == secretWord:

на:

while guessesLeft > -1 and not dashes.lower() == secretWord.lower():

Таким образом, вы всегда сравниваете строчные представления ввода пользователя с строчными.вашего secretWord.Так как это основной цикл для вашей игры, вы хотите выйти из него, как только догадка пользователя будет соответствовать вашему слову, независимо от регистра.Затем в вашем коде вы все равно проверите, остались ли у них какие-либо догадки, и распечатаете их ответ и секретное слово, как и раньше.

Никаких других изменений не требуется, я думаю.

0 голосов
/ 24 мая 2018

Вы можете просто сделать все сравнения в одном и том же регистре, например, в нижнем регистре.

Скажем, ваше слово "Бэкон".и кто-то вводит «о».
Это будет совпадение, поскольку вполне очевидно, что «о» равно «о», так что вы можете вычеркнуть эту букву из списка букв, оставленных угадать.

Но в случаечто кто-то вводит «b», тогда b НЕ равно «B».
Так почему бы не заставить все буквы сравнивать в одном и том же регистре?

Таким образом, ваше сравнение будет похоже на

    elif guess.Lower() in secretWord.Lower()

Мой питон чертовски ржавый, но идея здесь должна делать то, что вы хотите

0 голосов
/ 24 мая 2018

Просто проверьте все в нижнем регистре:

[...]
elif guess.lower() in secretWord.lower():
[...]

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...