Пока строка содержит недопустимый символ, не используйте цикл while - PullRequest
0 голосов
/ 01 мая 2020

Я хочу, чтобы пользователь продолжал вводить предложение до тех пор, пока в нем есть символ, которого нет в алфавите или пробел, использующий некоторое время l oop. Что я делаю не так?

plaintext = input("Enter the sentence to encode or decode: ")

    alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
                'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ']
    contin = True
    for i in range(0,len(plaintext)):
        while plaintext[i] not in alphabet:
            contin = False
    while not contin:
        plaintext = input("Enter the sentence to encode or decode: ")

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Это то, что вы ищете?

alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ']

while True:
  plaintext = input("Enter the sentence to encode or decode: ")
  plaintext_list = [*plaintext]
  if set(plaintext) & set(alphabet):
    break
0 голосов
/ 01 мая 2020

Вы можете сделать что-то вроде этого:

alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O','P', 'Q', 'R','S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ']

okey = True
string = ''
while okay is True:
    tmp = input()
    if tmp in alphabet:
        string += tmp
    elif tmp not in alphabet:
        okay = False

print(string)

Но пользователю необходимо нажимать ввод / возврат каждый раз, когда он вводит любой символ.

...