Как сравнить строку с массивом на python?

И так, у меня есть строчка tag, например она равна: tag = HFDJFUАВЫВHJFDSJK, тут есть и русские и англ. символы, так же есть массив alpha = ['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'], нужно сравнить символы из массива с символами в tag, и если tag состоит только из англ. символов то продолжить, но если в tag имеются другие символы выдать ошибку, как это сделать?
  • Вопрос задан
  • 960 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Проще записать допустимые символы не массивом, а множеством, а потом воспользоваться методами множества.
tag = 'HFDJFUАВЫВHJFDSJK'
alpha = { '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' }
if alpha.issuperset(tag): # что делают issuperset() и issubset() почитаешь сам
  print('Всё хорошо')
else:
  print('Есть недопустимые символы:', set(tag) - alpha )


Но можно и вручную (может быть несколько медленнее):
tag = 'HFDJFUАВЫВHJFDSJK'
alpha = [ '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' ]
if all( (symbol in alpha) for symbol in tag ):
  print('Всё хорошо')
else:
  print('Есть недопустимые символы')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
На вскидку есть 2 варианта:

1.
Цикл по tag
Каждый символ проверяешь на наличие в списке alpha
Если символ не находится - выводишь ошибку

2.
Делаешь 2 множества (set) первое - символы в tag, второе - символы в alpha.
Если разница этих множеств будет не пустой - тогда выводишь ошибку.

Если нужен код, то сначала попробуй свой написать, если не получится - показывай что написал - направим.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект