Переменная не определена после условий - PullRequest
0 голосов
/ 14 февраля 2019

Предполагается, что это программа-генератор паролей в Python 3.

import string
from random import *

print("Type Yes or No For The Following Questions:")

letters = raw_input("Do you want letters in your passcode?" )
if raw_input == 'Yes': chars1 = string.ascii_letters 
elif raw_input == 'No': chars1  = ""

digits = raw_input("Do you want digits in your passcode?" )
if raw_input == 'Yes':chars2 = string.digits
elif raw_input == 'No': chars2 = ""

symbols = raw_input("Do you want symbols in your passcode?" )
if raw_input == 'Yes': chars3 = string.punctuation 
elif raw_input == 'No': chars3  = ""

requestedlength = input("What passcode length do you want? Type any   number: ")
length = int(requestedlength)

chars = chars1 + chars2 + chars3

passcode = raw_input("Type Enter To Generate Random Passcode: ")
print("".join(choice(chars) for x in range((length))))

Что я здесь не так делаю?Ошибка гласит, что chars1 chars2 и chars3 не определены.Как бы я определил эти переменные после их изменения в условных выражениях?Я довольно новичок в Python, поэтому я прошу прощения, если код беспорядок: (

РЕДАКТИРОВАТЬ: Спасибо всем за ответы!

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Измените вашу «входную» опечатку в ваших операторах if на «буквы» и т. Д. Для других циклов:

letters = input("Do you want letters in your passcode?")
if letters == 'Yes':
    chars1 = string.ascii_letters
elif letters == 'No':
    chars1 = ""

digits = input("Do you want digits in your passcode?")
if digits == 'Yes':
    chars2 = string.digits
elif digits == 'No':
    chars2 = ""

symbols = input("Do you want symbols in your passcode?")
if symbols == 'Yes':
    chars3 = string.punctuation
elif symbols == 'No':
    chars3 = ""
0 голосов
/ 14 февраля 2019

Вот как я заставляю его работать:

import string
from random import *

print("Type Yes or No For The Following Questions:")

letters = input("Do you want letters in your passcode?" )
if letters == 'Yes': chars1 = string.ascii_letters 
elif letters == 'No': chars1  = ""

digits = input("Do you want digits in your passcode?" )
if digits == 'Yes':chars2 = string.digits
elif digits == 'No': chars2 = ""

symbols = input("Do you want symbols in your passcode?" )
if symbols == 'Yes': chars3 = string.punctuation 
elif symbols == 'No': chars3  = ""

requestedlength = input("What passcode length do you want? Type any   number: ")
length = int(requestedlength)

chars = chars1 + chars2 + chars3

passcode = input("Type Enter To Generate Random Passcode: ")
print("".join(choice(chars) for x in range((length))))
0 голосов
/ 14 февраля 2019

Потому что ваши операторы if не задают правильную вещь

Вы задаете некоторую переменную с помощью ввода

letters = raw_input("Do you want letters in your passcode?" )

, а затем спрашиваете, является ли raw input "Да", чтоникогда не является

if raw_input == 'Yes': chars1 = string.ascii_letters 

Так что ваши операторы if всегда ложны, а переменные (chars1 и т. д.) никогда не устанавливаются, поэтому вы получаете ошибку

Чтобы исправить это, просто измените ваш ifзаявление

if letters == 'Yes': chars1 = string.ascii_letters 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...