#python #python-3.x
#python #python-3.x
Вопрос:
username='smith123'
numbers='1234567890'
for i in username:
if i in numbers:
print(username)
#break
Здравствуйте, я пишу код, в котором, если в username существует число, оно печатается, но в таких именах пользователей имена пользователей печатаются 3 раза. Чтобы убедиться, что оно будет напечатано только один раз, существует ли какой-либо метод без использования break? Спасибо.
Комментарии:
1. может быть, попробуйте не использовать
for
цикл2. Для этого могут быть совершенно разные способы, но
break
выход из цикла, как только ваше условие выполнено, является правильным решением…
Ответ №1:
Попробуйте это:
username='smith123'
if any(char.isdigit() for char in username):
print(username)
Документы:
Любой,
isdigit,
(список) понимание
Ответ №2:
Просто другой способ с использованием re:
w
Для шаблонов Unicode (str):
Соответствует символам слова в Юникоде; сюда входит большинство символов, которые могут быть частью слова на любом языке, а также цифры и подчеркивание. Если используется флаг ASCII, сопоставляется только [a-zA-Z0-9_] .
import re
username="smith123"
if re.match(r"^w $", username):
print(username)
Комментарии:
1.
^
не требуется, посколькуre.match
привязан к началу строки2. хотя re может быть хорошим решением в целом, это конкретное решение не соответствует заданному вопросу об выяснении, «содержит ли имя пользователя числа». Это решение выводит имя пользователя, если оно состоит только из «символов word».
3. @Raphael это был пример регулярного выражения для соответствия строке примера из вопроса, и я думаю, вы могли бы просто оставить предложение по редактированию без этих бесполезных комментариев 😉