Напишите функцию, которая определяет, является ли предоставленная строка представленной строковым литералом Python с разделителями - PullRequest
0 голосов
/ 22 ноября 2018

Для этой функции допустимым разделителем является кавычка (") или апостроф ('). Правильно разделенные строки должны использовать один и тот же разделитель для начального и конечного символа, и этот разделитель не должен использоваться внутриstring. Ваша функция должна возвращать результат в виде логического значения .

Вот примеры того, как ваша функция должна работать.

test1 = input("Enter a test string: ") #user enters: "hello worlds"
print(valid_string(test1))             #True

Это из моего предыдущего теста иЯ получил идеальный ноль. Может кто-нибудь показать мне, с чего начать?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Хорошо, это должно работать:

def valid_string(s):
    try:
        return s[0] == s[-1] and s[0] in ["'", '"'] and s[0] not in s[1:-1] and len(s) > 1
    except:
        return False


while True:
    test1 = input("Enter a test string: ")
    print(valid_string(test1))

Это работает для строк длиной менее 2 символов:

$ ./valid_string2.py
Enter a test string: 'adsdasfd"adfadfs'
True
Enter a test string: 'adsfdsafdfs'adsfasd'
False
Enter a test string: "adsfdasf'adsfads"
True
Enter a test string: "adsfasdf"adfasd"
False
Enter a test string: """
False
Enter a test string: "'"
True
Enter a test string: '"'
True
Enter a test string: a
False
Enter a test string: 'a'
True
Enter a test string: "a'
False
Enter a test string: a'
False
Enter a test string: 'a"
False
0 голосов
/ 22 ноября 2018

Ключ к выяснению этого здесь:

В правильно разделенных строках должен использоваться один и тот же разделитель для начального и конечного символов, и этот разделитель не должен использоваться в строке.

Вы можете проверить, что строка начинается с двойной кавычки, выполнив что-то вроде my_string[0] == '"', и аналогично для конца, выполнив my_string[-1] == '"'.Это работает, потому что string [0] и string [-1] будут обращаться к первым и последним символам соответственно.Если вы не знаете, отрицательные индексы в Python просто означают начать отсчет с конца (таким образом, индекс -2 будет означать секунду с конца и т. Д.).

Затем вы можете проверить, что двойнойкавычка происходит внутри строки, делая что-то вроде этого: my_string[1:-1].count('"') == 0.Это работает, потому что my_string [1: -1] берет часть строки, исключая первый и последний символ, а затем подсчитывает количество раз, когда двойная кавычка встречается (ноль - она ​​никогда не должна появляться).

Но ждать!Одиночная цитата также может быть разделителем!Я оставлю это как вызов для вас.Подсказка: убедитесь, что начальный и конечный разделители совпадают, а также убедитесь, что другой разделитель встречается внутри строки.Вам также следует подумать об обработке краевых случаев со строками длиной 0 или 1 символ.Дайте мне знать, если какие-то части этого ответа не имеют смысла, или вы хотели бы получить разъяснения по поводу чего-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...