#python #python-3.x
#python #python-3.x
Вопрос:
Задача состоит в том, чтобы создать программу, которая будет считать и печатать все коды в формате «AA000», который содержит буквы «AB» в начале и «00» в конце кода.
def main():
code = list(input ("Please enter all codes of your products in format 'AA000':").split())
print("Your codes are:", code)
char = -1
for char_pos in range(len(code)):
if code[char_pos] == "AB" or code[char_pos] == "00":
char = char_pos
print("ok")
if char == -1:
print("No!")
main()
==================================================================================================
Please enter all codes of your products in format 'AA000':00
Your codes are: ['00']
ok
==================================================================================================
Please enter all codes of your products in format 'AA000':AB400
Your codes are: ['AB400']
No!
Это работает не так, как планировалось, потому что программа не может найти эти символы, пока они вводятся вместе, но отдельно «AB» и «00» программа может найти… Как я могу решить эту проблему?
Комментарии:
1. Вам не нужно использовать циклы, просто проверьте, если
len(code) == 5 and code.startswith('AB') and code.endswith('00')
.2. Использование регулярного выражения
bool(re.match(r'ABd00'))
будет более кратким, но приведенное выше условие делает свое дело.
Ответ №1:
Вы можете использовать нарезку, чтобы проверить, соответствует ли каждая часть кода фильтру:
def main():
code = input("Please enter all codes of your products in format 'AA000':")
print("Your codes are:", code)
if len(code) == 5 and code[:2] == 'AB' and code[-2:] == '00':
print("ok")
else:
print("No!")
main()
Комментарии:
1. Спасибо, я протестировал его, и он работает! Но возникла другая проблема. Я должен присвоить переменной те коды, которые содержат «AB» и «00» в конце, для их подсчета и печати. Как я могу назначить его правильно?