#string #function #ascii
Вопрос:
Я пишу функцию в блокноте Jupyter, чтобы определить, соответствует ли имя пользователя определенным требованиям к символам. Требования к персонажу следующие:
Символы могут быть прописными или строчными или цифрами. Дополнительные разрешенные символы включают , — и _. Я придумал функцию, которая работает для этой цели, но я пытаюсь понять, почему аналогичная функция не работает.
Первый набор кода — это решение, которое я нашел.
### This code works as expected ###
def valid_char(string):
ascii_code = []
spec_char = [43, 45, 95]
upper_case = list(range(65,91))
lower_case = list(range(97,123))
numb = list(range(48,58))
ascii_code = spec_char upper_case lower_case numb
for character in string:
if ord(character) not in ascii_code:
return False
return True
Test_1 = 'Abc123 -_'
Test_2 = '
Я думал, что этот следующий набор кода также будет работать, но по какой-то причине он не дает тех же результатов. Мне бы очень хотелось понять, почему.
### Why doesn't this function produce the same result as the first? ###
def ok_char(string):
spec_char = [43, 45, 95]
upper_case = list(range(65, 91))
lower_case = list(range(97, 123))
numb = list(range(48,58))
for character in string:
if ord(character) in spec_char or upper_case or lower_case or numb:
return True
return False
Test_1 = 'Abc123 -_'
Test_2 = '
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
### This function also works as expected ###
def ok_char(string):
spec_char = [43, 45, 95]
upper_case = list(range(65, 91))
lower_case = list(range(97, 123))
numb = list(range(48,58))
for character in string:
x = ord(character)
if x in spec_char or x in upper_case or x in lower_case or x in numb:
return True
return False
Test_1 = 'Abc123 -_'
Test_2 = '
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = '['
print(valid_char(Test_1)) #True
print(valid_char(Test_2)) #False
print(valid_char(Test_3)) #False
Я думал, что этот следующий набор кода также будет работать, но по какой-то причине он не дает тех же результатов. Мне бы очень хотелось понять, почему.
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = '['
print(ok_char(Test_1)) #True
print(ok_char(Test_2)) #True
print(ok_char(Test_3)) #True
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = '['
print(valid_char(Test_1)) #True
print(valid_char(Test_2)) #False
print(valid_char(Test_3)) #False
Я думал, что этот следующий набор кода также будет работать, но по какой-то причине он не дает тех же результатов. Мне бы очень хотелось понять, почему.
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = ‘[‘
print(ok_char(Test_1)) #True
print(ok_char(Test_2)) #False
print(ok_char(Test_3)) #False
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = ‘[‘
print(valid_char(Test_1)) #True
print(valid_char(Test_2)) #False
print(valid_char(Test_3)) #False
Я думал, что этот следующий набор кода также будет работать, но по какой-то причине он не дает тех же результатов. Мне бы очень хотелось понять, почему.
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = ‘[‘
print(ok_char(Test_1)) #True
print(ok_char(Test_2)) #True
print(ok_char(Test_3)) #True
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!
Test_3 = ‘[‘
print(valid_char(Test_1)) #True
print(valid_char(Test_2)) #False
print(valid_char(Test_3)) #FalseЯ думал, что этот следующий набор кода также будет работать, но по какой-то причине он не дает тех же результатов. Мне бы очень хотелось понять, почему.
Спасибо за вашу помощь. Я новичок, только начинаю.
Решение
Комментарии:
1.
x in y or z
означает(x in y) or (z)
. Чего ты хочешь, так это(x in y) or (x in z)
.2. Спасибо за вашу помощь!