Как заставить функцию выполняться в цикле for без повторения команды после каждого цикла

#python #for-loop

#python #for-цикл

Вопрос:

Прямо сейчас я работаю над файлом, в котором он позволяет настраивать пароль. Каждый раздел позволяет выбирать между именем, номером и другими разделами с определенным количеством разделов. Я не могу понять, как поместить код, который генерирует каждый раздел в цикле num_of_pass for, не повторяя текст «Что бы вы хотели в разделе #’ str(current_section) ‘? (имя, число, буква, символ, год, день, месяц) ‘ каждый раз, когда он выдает новый пароль. Как я мог заставить это работать?

     names = ['Tim', 'Alex', 'Thomas', 'Katrina', 'Joshua', 'James', 'John', 'Emily', 'Mary', 'Patricia', 'Jennifer',
             'Linda', 'Elizabeth', 'Robert', 'Michael', 'William', 'David', 'Richard', 'Ashley', 'Damon', 'Max']

    options = ['name', 'number', 'letter', 'symbol', 'year', 'day', 'month']

    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

    months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

sections = input('How many sections would you like? ')
        num_of_pass = input('How many passwords would you like? ')
        current_section = 1
        for num in range(int(sections)):
            section_type = input('What would you like in section #'   str(current_section)   '? (name, number, letter, symbol, year, day, month) ')
            if section_type == 'name':
                section = random.choice(names)
            elif section_type == 'number':
                section = str(random.randint(1, 9))
            elif section_type == 'letter':
                section = random.choice(string.ascii_letters)
            elif section_type == 'symbol':
                section = str(random.choice(string.punctuation))
            elif section_type == 'year':
                section = str(random.randint(1000, 2020))
            elif section_type == 'day':
                section = random.choice(days)
            elif section_type == 'month':
                section = random.choice(months)
            password = password   section
            current_section  = 1
        print(password)
        password = ''
  

Ответ №1:

Я думаю, вы можете просто поместить input оператор вне цикла, или есть обходной путь — поместить его в условие:

 for num in range(int(sections)):
            if count == 0:
                section_type = input('What would you like in section #'   str(current_section)   '? (name, number, letter, symbol, year, day, month) ')
                count  = 1
            if section_type == 'name':
                section = random.choice(names)
  

Комментарии:

1. Для обхода, что мне установить count перед запуском команды? Куда бы я ее поместил?

2. Объявите переменную count как count = 0 вне цикла.

3. Это не работает. Он выдает мне только 1 пароль, хотя я просил два, а также позволяет мне выбирать только то, что находится в первом разделе, а затем повторяет его для всех разделов,

4. Могу ли я где-нибудь связаться с вами лично? Где-нибудь мы могли бы сотрудничать, я мог бы вам помочь… У вас есть учетная запись Discord?

5. У меня нет учетной записи discord, но у меня есть skype и приложение xbox.