python if子句不会激活

时间:2014-12-08 11:10:24

标签: python if-statement

我正在编写一个程序来查找ISBN号中缺少的数字。你必须找到剩下的前9个数字中的11个,如下所示:第一个* 10,第二个数字* 9,第三个* 8,等等。如果此余数等于第10位,则ISBN是正确的。

我有一些代码在问号的空白处放置零,并在零所在的数字中找到索引,并将索引加到总数的1 *,并将其修改为11.然后,如果11的剩余部分不等于第10位,它尝试2 *指数,并继续前进,直到找到正确的数字。但是,执行此最终部分的代码块不会触发,我无法弄清楚原因。

def calculate_missing(x):
    tally=1
    for item in x:
        if item=='?':
            break
        elif item!='?':
            tally+=1
    if tally==10:
        without=str(x).replace('?','')
        if isbncalculate(without)==10:
            return 'x'
        elif isbncalculate(without)==11:
            return '0'
        else:
            return isbncalculate(without)
        #these just find the missing digit if it is the final digit.
    multiply=11-tally
    x=x.replace('?','0')
    lastdig=x[9]
    x=x.replace(x[9],'')
    time=10
    newnum=0
    for item in str(x):
        item=int(item)
        item*=time
        newnum+=int(item)
        time-=1
    otherthing=6
    if lastdig=='x' or lastdig=='X':
        lastdig=10
    elif lastdig=='0':
        lastdig='11'
    final=newnum+(otherthing*multiply)
    answer=final%11
    for item in range(0,10):
        if answer==lastdig:
            #this code won't trigger!
            return otherthing
        else:
            otherthing+=1

最后几行是我正在努力解决的问题。如果我输入calculate_missing('567?545653'),它应该返回6,但它只返回任何内容。

1 个答案:

答案 0 :(得分:0)

替换:

if answer==lastdig:

使用:

if answer==int(lastdig):

即使answerlastdig都相同,但answer整数lastdig字符串即可。因此,要么在比较时将answer转换为字符串,要么将lastdig转换为整数。这将解决问题。