Как проверить, является ли n-ая буква в строке ненулевой - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно проверить, что n-я буква в строке не равна нулю. Код будет использоваться для проверки того, переполнит ли вход в буфер переменную auth, сохраненную сразу после буфера.

def test(expect, ans):
    try:
        return len(str(ans)) >= int(expect) and ans[10] is not False
    except ValueError:
        return False


def test2(expect, ans):
    try:
        return len(str(ans)) >= int(expect) and ans[15] != 0
    except ValueError:
        return False


ans1 = "asdfghjklp0"
print(ans1[10])
print(test(11, ans1))
ans2 = "1234567890123450"
print(ans2[15])
print(test2(16, ans2))

Оба теста должны вернуть false.

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Решение

def iszero_nth_letter(s, n=10):
    ss = s[n]
    # check if the n-th letter is a digit and 0 as well
    decision = ss.isdigit() and int(ss)==0
    return decision

print(iszero_nth_letter(s=ans1, n=10))
print(iszero_nth_letter(s=ans2, n=15))
print(iszero_nth_letter(s=ans2, n=13))

Выход :

True
True
False
0 голосов
/ 23 октября 2019

Это работает для меня:

def test(expect, ans):
    return ans[expect-1] != "0"


ans1 = "asdfghjklp0"
print(ans1[10])
print(test(11, ans1))

ans2 = "1234567890123450"
print(ans2[15])
print(test(16, ans2))
...