#python #string #if-statement
#python #строка #if-оператор
Вопрос:
Например, я хочу, чтобы пользователь ввел почтовый индекс. Однако у него есть ограничения, такие как длина почтового индекса должна быть 5; первый, третий и пятый символы должны быть цифрами, в то время как другие должны быть буквами. В противном случае программа должна отобразить ошибку. Я предполагаю, что мне нужно написать условие, но я не придумал код, который проверит, является ли определенный символ строки числовым или буквенным.
Комментарии:
1. Похоже на задание для регулярных выражений
2. вы можете использовать
try:except
блок и преобразовать каждый символ в int . В качестве альтернативыimport string
, а затем используйтеstring.ascii_lowercase
, например. Для SStackOverflow вы также должны попробовать решить проблему самостоятельно и объяснить, где ваш подход дает сбой, чтобы люди могли вам помочь, а не ожидать, что они сделают это за вас.3. Попробуйте регулярные выражения
Ответ №1:
Здесь можно использовать регулярные выражения:
postcode = "1A2B3"
if re.search(r'^d[A-Za-z]d[A-Za-z]d$', postcode):
print("postal code is valid")
Приведенное выше регулярное выражение указывает на:
^ from the start of the postal code
d match a digit
[A-Za-z] match a letter
d match a digit
[A-Za-z] match a letter
d match a digit
$ end of the postal code
Ответ №2:
Вы можете разделить почтовый индекс на список символов и использовать isnumeric() и isalpha(), чтобы проверить тип для каждого символа в их конкретных местоположениях вашего строкового почтового индекса.
postal_code = '1A2B3'
def split(word):
return [char for char in word]
def postal_code_checker(postal_code):
# check the length of the post_code
if len(postal_code) != 5:
return False
#split the postal code ['1', 'A', '2', 'B', '3']
char_list = split(postal_code)
#check the type for the specific position
if char_list[1].isnumeric() or char_list[3].isnumeric():
return False
if char_list[0].isalpha() or char_list[2].isalpha() or char_list[4].isalpha() :
return False
#if all is OK return True
return True
if postal_code_checker(postal_code):
print('no error')
else:
print('There was an error')