Python: Как проверить, находится ли элемент строки в строке, и распечатать не включенные элементы строки? - PullRequest
1 голос
/ 27 мая 2020

Я хочу проверить каждый элемент списка c в алфавите и распечатать буквы алфавита, которых нет в элементе списка c.

Например, должен ли первый элемент списка of c "aa" вывести все буквы алфавита в строке, исключая букву a.

alphabet = "abcdefghijklmnopqrstuvwxyz"   
c = ['aa', 'bb', 'zz']

for x in c:
  if x in alphabet:
    print(alphabet)
  else:
    print('not an element of alphabet')

Ответы [ 3 ]

2 голосов
/ 27 мая 2020

Примерно так:

alphabet = "abcdefghijklmnopqrstuvwxyz"   
cases = ['aa', 'bb', 'zz']

for case in cases:
    missing_letters = []
    for letter in alphabet:
        if letter not in case:
            missing_letters.append(letter)
    print(f"Case {case} misses following alphabeth letters {missing_letters}")

Вывод:

Case aa misses following alphabeth letters ['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']
2 голосов
/ 27 мая 2020

Если вы уверены, что все элементы в c имеют формат 'xx', как в вашем примере, то следующее решение является следующим:

alphabet = "abcdefghijklmnopqrstuvwxyz"   
c = ['ad', 'bb', 'zz','ad', 'bt', 'uz']

for x in c:
  new_alph = alphabet
  for char in x:
    new_alph = new_alph.replace(char,'')
  if new_alph == alphabet:
    print('not an element of alphabet')
  else:
    print(new_alph)

Вывод:

bcefghijklmnopqrstuvwxyz
acdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxy
bcefghijklmnopqrstuvwxyz
acdefghijklmnopqrsuvwxyz
abcdefghijklmnopqrstvwxy

Другой способ - использовать translate, чтобы сделать код более компактным:

alphabet = "abcdefghijklmnopqrstuvwxyz"   
c = ['ad', 'bb', 'zz','ad', 'bt', 'uz']

for x in c:
  new_alph = alphabet.translate({ord(char): '' for char in x})
  if new_alph == alphabet:
    print('not an element of alphabet')
  else:
    print(new_alph)

Вывод:

bcefghijklmnopqrstuvwxyz
acdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxy
bcefghijklmnopqrstuvwxyz
acdefghijklmnopqrsuvwxyz
abcdefghijklmnopqrstvwxy
0 голосов
/ 27 мая 2020

Пока строки в c составляют только 2 символа, это будет работать

alphabet = "abcdefghijklmnopqrstuvwxyz"   
c = ['aa', 'bb', 'zz']

for x in c:
  if x[0] in alphabet or x[1] in alphabet:
    alphabet.replace(x[0], '').replace(x[1], '')
  else:
    print('not an element of alphabet')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...