#python
#python
Вопрос:
я впервые задаю этот вопрос здесь, в стеке. У меня есть вопрос относительно этого кода:
ssn = str(input("Enter your ssn:"))
if (len(ssn) == 11 and ssn[3] == '-' and ssn[6] == '-'):
print(ssn " is a valid social security number.")
else:
print(ssn " is not a valid social security number.")
Дело в том, что я подумал, что этот код был бы хорош, если бы я набрал в обычном формате, например 123-45-6789, и это дало бы мне правильную инструкцию print. Однако я также заметил, что если я набрал ddd-dd-dddd , это также дает мне логически правильную инструкцию print, но я хочу работать только с цифрами.
Заранее большое вам спасибо за помощь, в настоящее время я студент и относительно молод в области программирования. Любые результаты будут оценены.
Комментарии:
1. Вы взглянули на использование
regex
? или вы против его использования?2. Мы еще не обязательно говорили о регулярных выражениях, но я открыт для новых знаний. Но сейчас я хотел знать, как закодировать его самым простым способом. Если это имеет смысл. Спасибо за ваш ответ!
Ответ №1:
Это простое регулярное выражение для проверки номера ssn.
const validSsn = (value: string) =>
value amp;amp; /^(?!(000|666|9))(d{3}-?(?!(00))d{2}-?(?!(0000))d{4})$/.test(value)
? true
: false
Приведенный выше код взят из SSNValidator.org
Ответ №2:
В python вызывается функция isdigit()
, которая проверяет, является ли введенная строка цифрой. Мы можем использовать его вместе с получением подмножества вашей строки, мы можем проверить, являются ли другие части цифрами.
ssn = str(input("Enter your ssn:"))
if (len(ssn) == 11 and ssn[0:3].isdigit() and ssn[3] == '-' and ssn[4:6].isdigit() and ssn[6] == '-' and ssn[7:].isdigit()):
print(ssn " is a valid social security number.")
else:
print(ssn " is not a valid social security number.")
Поскольку вы упомянули, что вы новичок в программировании, просто чтобы немного уточнить,
ssn[x:y]
принимает символы из индекса x
до (но не включая) индекса y
и позволяет обрабатывать его как отдельную строку.
Комментарии:
1. Это очень помогло, изначально я собирался использовать подстроки == 1 или == 2 и так далее. Еще раз, большое вам спасибо за ваше время и помощь, я действительно ценю это. Хорошего дня!