Написание функции для вычисления строки для определенных символов ascii

#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. Спасибо за вашу помощь!