Использование переменных 'if' в списках - PullRequest
0 голосов
/ 07 ноября 2018

Я знаю, что это будет очень конкретно и, возможно, даже спрашивалось раньше, но я не могу найти ничего, что могло бы помочь мне с этим. Я пытаюсь создать игру, похожую на «Papers, Please», и мне трудно использовать переменные и списки «if» одновременно.

Это мой код:

import time
import random

#Variables

NAT = ["British","American","French","Spanish","Italian"]

GEN = ["M","F"]
if GEN == "M":
    FN = ["Greg","Harvey","Joseph","Prabesh","John","Joe"]
elif GEN == "F":
    FN = ["Emma","Olivia","Sophia","Ava","Georgia","Nia"]

LN = ["Sutton","Little","Mayers","Pearce","Fagu","Smith"]
D = list(range(1,28))
M = ["Jan","Feb","March"]
Y = list(range(1900,1975))

#Design

def passport():
    global NAT
    global FN
    global GEN
    print(" __________")
    print("|-PASSPORT-|")
    print("|Nationality:",random.choice(NAT))
    print("|Gender:",random.choice(GEN))
    print("|First Name:",random.choice(FN))
    print("|Last Name:",random.choice(LN))
    print("|D.O.B:",random.choice(D),random.choice(M),random.choice(Y))


passport()

Все работало нормально, пока я не добавил переменную пола. Я получаю ошибку:

Traceback (most recent call last):
  File "C:/Users/Greg/AppData/Local/Programs/Python/Python37-32/Games.py", line 60, in <module>
    passport()
  File "C:/Users/Greg/AppData/Local/Programs/Python/Python37-32/Games.py", line 55, in passport
    print("|First Name:",random.choice(FN))
NameError: name 'FN' is not defined
>>> 

Любая помощь будет высоко ценится, так как я не знаю, куда идти отсюда. Извините за боль :) 1009 *

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Вы определяете следующее:

GEN = ["M","F"]

Следовательно, оба эти if/elif оператора не выполняются (потому что ["M","F"] != "M", а также ["M","F"] != "F"):

if GEN == "M":
    FN = ["Greg","Harvey","Joseph","Prabesh","John","Joe"]
elif GEN == "F":
    FN = ["Emma","Olivia","Sophia","Ava","Georgia","Nia"]

Следовательно, FN не определено.

0 голосов
/ 07 ноября 2018

Поскольку другие говорят, что переменная FN не определена, перед if GEN == "M": будет хорошо определить FN следующим образом:

FN = []
if GEN == "M":
# And so on ...
0 голосов
/ 07 ноября 2018

GEN имеет значение ["M", "F"] в тот момент, когда выполняется оператор if. Это означает, что GEN также не соответствует, если регистр операторов, и поэтому FN никогда не определяется.

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

...