Как исправить NameError: имя 'пароль' не определено - PullRequest
0 голосов
/ 25 марта 2020

это мой самый первый код. Это хорошо работает, если я просто все правильно ввожу. Однако, если я ввожу неправильные значения в определенных точках, то я получаю ошибку «NameError: имя« пароль »не определено». Наряду с возможным решением, если бы вы могли просмотреть мой код и дать мне некоторую обратную связь о том, как я могу сделать его лучше, это было бы здорово.

Я не знаю, почему пароль не определен. Решения, которые я попробовал: 1. Назначение имен переменных. 2. Прочитайте книгу, из которой я учусь, но в соответствии с книгой мой код в порядке. 3. Прочитайте похожие посты, но их код намного сложнее, поэтому я не могу понять ни код, ни решение. 4. Различные отступы. Символы в "" хорошо совпадают.

Кажется, что значение не сохраняется в пароле, как мне сохранить значение в пароле?

Мой код:

def PWCategory():
    print("[pw category]")
    for i in range(0, len(category)):
        print(i+1, ".", category[i])
    print()

def NumPWMaking():
  num_random = string.digits
  password = ""
  for i in range(lang):
    password += random.choice(num_random)
  print(password)


def AlphaPWMaking():
  string_random = string.ascii_letters
  password = ""
  for i in range(lang):
    password += random.choice(string_random)
  print(password)

def NumAlPWMaking():
  string_random = string.ascii_letters + string.digits
  password = ""
  for i in range(lang):
    password += random.choice(string_random)
  print(password)

def NumAlUniPWMaking():
  string_random = string.ascii_letters + string.digits + string.punctuation
  password = ""
  for i in range(lang):
    password += random.choice(string_random)
  print(password)

print("pw making")
lang = int(input("pw digit(4~8): "))

if(lang < 4):
  print("Input value is less than 4.")

elif(lang > 8):
  print("Input value is greater than 8.")

else:
  if __name__ == '__main__':

    category = ("only number", "only alphabet", "number+alphabet", 
"number+alphabet+Special Characters")
    PWCategory()
    select = int(input("Select the number. (exit : 0) : "))
    if(select==0):
      print("exit")

    elif(select==1):
      NumPWMaking()

    elif(select==2):
      AlphaPWMaking()

    elif(select==3):
      NumAlPWMaking()

    elif(select==4):
      NumAlUniPWMaking()

print("pw matching")
searchpw = re.compile("[a-z]+")
matchingpw = searchpw.search(password)
password
if matchingpw == password:
  print("matched pw: ")
  print(matchingpw.group())

else:
  print("I couldn't find it.")

1 Ответ

0 голосов
/ 25 марта 2020

Переменная, созданная внутри функции, действительна только внутри функции, поэтому отредактируйте ваш NumPWMaking () в:

def NumPWMaking():
  num_random = string.digits
  password = ""
  for i in range(lang):
    password += random.choice(num_random)
  print(password)
  return password

и преобразуйте:

elif(select==1):
      NumPWMaking()

В:

elif(select==1):
      password=NumPWMaking()

Аналогичным образом сделайте это для других функций.

...