Я заканчиваю онлайн-курс, в котором используется Python 3, и ниже - приглашение, которое я получил:
Напишите функцию с именем is_valid. is_valid должен занять два
параметры: строка для проверки и строка всех допустимых
символы.
is_valid должен возвращать логическое значение True, если все
символы в строке для проверки присутствуют в строке
действительных символов. Должен возвращать False, если любой символ
в проверенной строке не появляется.
Я определил функцию, которая принимает два параметра, упомянутых в задаче: строку (которую в моем коде я называю строкой) и строку допустимых символов (которую я назвал validcharacters).
Я не должен использовать какие-либо из встроенных строковых функций Python, поэтому я решил написать цикл for с моей индексной переменной, называемой символом, который индексирует через строку. После того, как написан цикл for, я написал оператор if, в котором проверяется, есть ли символ (переменная индекса) в допустимых символах. Если это так, он возвращает True. В противном случае я написал инструкцию else, которая возвращает False.
def is_valid(string, validcharacters):
for character in string:
if character in validcharacters:
return True
else:
return False
Ниже приведены несколько тестовых примеров для работы:
sample_valid_string = "1234-5678-9011-1111"
sample_invalid_string = "1234!5678.9011?1111"
valid_characters = "0123456789-"
print(is_valid(sample_valid_string, valid_characters))
print(is_valid(sample_invalid_string, valid_characters))
Я ожидаю, что выходные данные (для тестовых случаев, которые я перечислил выше) будут True и False соответственно. Однако, как написан мой код, он возвращает True и True. Я обнаружил, что при отладке он проходит только по первому символу моего кода и не может повторять другие символы. Я не уверен, как мне нужно переписать свой код, чтобы он проходил через другие символы перед возвратом True или False. Нужно ли мне переставлять свои декларации? Они заставляют функцию заканчиваться слишком рано?