python для функции вывода l oop приносят один и тот же результат снова и снова - PullRequest
0 голосов
/ 13 марта 2020

Я написал функцию, которая проверяет достоверность идентификатора. Существует алгоритм, который выполняет несколько вычислений - сначала убедитесь, что длина идентификатора равна 9, а затем другие вычисления, результат должен быть разделен на 10, а затем вывод будет True или False list6 включает в себя список if list6 = [21544622,301038725], вызывающий функцию вручную, приведет к правильному результату True или False, однако в l oop что-то go неправильно и получит тот же результат

l=[]
ls=[]
count=0
num=[1,2,1,2,1,2,1,2,1]
d=[]
list3=[]
def check_id(s):
    b=0
    z=0
    s=str(s)
    if len(s)<6:
        print("wrong id")
    elif len(s)==6:
        s='000'+s
    elif len(s)==7:
        s='00'+s
    elif len(s)==8:
        s='0'+s
    else:
        pass
    for digit in s:
        l.append(int(digit))
    b=list(zip(l,num))

    for k,v in b:
        d.append(k*v)
    for n in d:
        n=str(n)
        if len(n)==2:
            n=int(n[0])+int(n[1])

        else:
            n=int(n)
        list3.append(n)
    z=sum(list3)



    return z%10==0


for x in list6:

    check=0
    check=check_id(s=x)
    print(check)

1 Ответ

0 голосов
/ 13 марта 2020

после нескольких испытаний, пока я печатал каждый шаг, я обнаружил, что мне нужно разделить каждый идентификатор на разные цифры, а затем умножить его на 1 или 2. Я пропустил этот шаг, и теперь это должно работать

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