Как я могу сделать заявление if и elif на основе результата random.choice и ввода - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь создать игру, которая спрашивает вас, что определенный персонаж делает в книге, и я использую random.choice и оператор if и elif, чтобы сделать это, однако, когда я набираю свои данные, чтобы ответить на вопрос, вывод всегда неправильно, хотя я и ответил на вопрос Райт.

Я пытался сделать утверждение if:

if 'The main character' in card_list and choice == person1:
  print("correct")

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

import random

card1 = 'The main character'
card2 = 'He brings aleem on holiday'
card3 = 'Dies in the middle of the book'
card4 = "She takes care of aleem while aleem's dad is in Ethiopia"
card5 = 'He helps take care of aleem with Miss Fitzgerald'
card6 = "He is in charge of aleem's court case"

person1 = 'aleem'
person2 = "aleem's dad"
person3 = "aleem's mum"
person4 = 'Miss Fitzgerald'
person5 = 'Mr Fitzgerald'
person6 = 'Nicolas'

card_list = [card1, card2, card3, card4, card5, card6]

print(random.choice(card_list))

choice = input('Who is this? ')

if 'The main character' == random.choice and choice == person1:
  print("correct")
elif 'He brings aleem on holiday' == random.choice and choice == 
person2:
  print('correct')
elif 'Dies in the middle of the book' == random.choice and choice == 
person3:
  print('correct')
elif "She takes care of aleem while aleem's dad is in Ethiopia" == 
random.choice and choice == person4:
  print('correct')
elif 'He helps take care of aleem with Miss Fitzgerald' == 
random.choice and choice == person5:
  print('correct')
elif "He is in charge of aleem's court case" == random.choice and 
choice == person6:
  print('correct')
else:
  print('wrong')

Это то, что я использовал для создания игры.

Ответы [ 3 ]

0 голосов
/ 28 июня 2019

Вы не сохраняете случайную карту в переменной, чтобы потом ее можно было подсчитать,

if 'The main character' == random.choice and choice == person1:

random.choice возвращает объект метода, который никогда не будет совпадать со строкой «Главный персонаж»
Фиксированный код:

import random

card1 = 'The main character'
card2 = 'He brings aleem on holiday'
card3 = 'Dies in the middle of the book'
card4 = "She takes care of aleem while aleem's dad is in Ethiopia"
card5 = 'He helps take care of aleem with Miss Fitzgerald'
card6 = "He is in charge of aleem's court case"

person1 = 'aleem'
person2 = "aleem's dad"
person3 = "aleem's mum"
person4 = 'Miss Fitzgerald'
person5 = 'Mr Fitzgerald'
person6 = 'Nicolas'

card_list = [card1, card2, card3, card4, card5, card6]

random_card = random.choice(card_list)
print(random_card)

choice = input('Who is this? ')

if 'The main character' == random_card and choice == person1:
  print("correct")
elif 'He brings aleem on holiday' == random_card and choice == person2:
  print('correct')
elif 'Dies in the middle of the book' == random_card and choice == person3:
  print('correct')
elif "She takes care of aleem while aleem's dad is in Ethiopia" == random_card and choice == person4:
  print('correct')
elif 'He helps take care of aleem with Miss Fitzgerald' == random_card and choice == person5:
  print('correct')
elif "He is in charge of aleem's court case" == random_card and choice == person6:
  print('correct')
else:
  print('wrong')
0 голосов
/ 28 июня 2019

Альтернативные методы:

Использование индекса списка:

card_list = [card1, card2, card3, card4, card5, card6]
person_list= [person1, person2, person3, person4, person5, person6]
rand_choice=random.choice(card_list)
print(rand_choice)
choice = input('Who is this? ')

if choice in person_list and person_list.index(choice)==card_list.index(rand_choice):
    print('correct')
else:
    print('wrong')

Использование словаря:

card_list = [card1, card2, card3, card4, card5, card6]
person_list= [person1, person2, person3, person4, person5, person6]
d = {p:c for p,c in zip(person_list, card_list)}
rand_choice=random.choice(card_list)
print(rand_choice)
choice = input('Who is this? ')

if choice in d and rand_choice==d.get(choice):
    print('correct')
else:
    print('wrong')
0 голосов
/ 28 июня 2019

попробуйте блог переключения регистра и целочисленный диапазон rand (0,6)

 import random

card1 = 'The main character'
card2 = 'He brings aleem on holiday'
card3 = 'Dies in the middle of the book'
card4 = "She takes care of aleem while aleem's dad is in Ethiopia"
card5 = 'He helps take care of aleem with Miss Fitzgerald'
card6 = "He is in charge of aleem's court case"

person1 = 'aleem'
person2 = "aleem's dad"
person3 = "aleem's mum"
person4 = 'Miss Fitzgerald'
person5 = 'Mr Fitzgerald'
person6 = 'Nicolas'

card_list = [card1, card2, card3, card4, card5, card6]

print(random.choice(card_list))

  def numbers_to_strings(argument): 
    switcher = { 
        0: "card1", 
        1: "card2", 
        2: "card3"...
    } 

    return switcher.get(argument, "nothing") 



choice = input('Who is this? ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...