Что я должен изменить в циклах? - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу, чтобы слово car было написано столько же раз, сколько и букв слова hello.

word = str(input('Enter something to secure: '))    #answer: car
password = str(input('Enter password: '))            #answer: hello   
y = []
for character in word:
    while True:
        i = character
        y.append(i)
        if len(y) == len(password):
            break
    print(y)

Я хочу, чтобы это было напечатано:

['c', 'a', 'r', 'c', 'a']

К сожалению, это будет напечатано:

['c', 'c ',' c ',' c ',' c ']

Ответы [ 4 ]

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

Просто еще один способ сделать это с меньшими циклами и может повысить производительность

word = str(input('Enter something to secure: '))
password = str(input('Enter password: '))
print((word*(len(password)//len(word)+1))[:len(password)])
0 голосов
/ 07 февраля 2019

Вместо этого вы должны перебрать password и вывести символ word по одному.Вы можете вернуться к началу символа word, используя %

word = str(input('Enter something to secure: '))
password = str(input('Enter password: '))
y = []
for i in range(len(password)):
    y.append(word[i%len(word)]) # loop through word characters
print(y)
0 голосов
/ 07 февраля 2019

Вы должны попробовать это вместо использования нескольких циклов.

word = str(input('Enter something to secure: '))    
password = str(input('Enter password: '))            
index = len(word)
output = []
for i in range(0, len(password)):
    output.append(word[i%index])
print(output)
0 голосов
/ 07 февраля 2019

Использование itertools.cycle

Пример:

from itertools import cycle
word = str(input('Enter something to secure: '))    #answer: car
password = str(input('Enter password: '))            #answer: hello   
y = []
word = cycle(word)
for character in password:
    y.append(word.next())
print(y)

или

y = [word.next() for character in password]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...