代码不能从第二个if语句开始工作?

时间:2019-08-18 12:40:45

标签: python

Arpasland被攻击者包围。一辆卡车进入城市。司机声称,这是伊朗人的食物和药品。阿里是阿帕斯兰的士兵之一。他怀疑这辆卡车,也许是因为围困。他知道,如果标签的每两个连续数字之和为偶数且其字母不是元音,则该标签有效。确定卡车的标签是否有效。

我们认为字母“ A”,“ E”,“ I”,“ O”,“ U”,“ Y”是解决此问题的元音。

输入格式

第一行包含一个长度为9的字符串。格式为“ DDXDDD-DD”,其中D代表一个数字(非零),X代表一个大写英文字母。

输出格式

如果标记有效,则打印“有效”(不带引号),否则打印“无效”(不带引号)

code我写道:

x=input()
for i in range(len(x)-1):
    x1=x[i]
    x2=x[i+1]
    j=list()
    j.append(x1)
    j.append(x2)
    print(j)
    j1="".join(j)
    print(j1)
    print(j1.isdigit())
    print(j1[0],j1[1])
    if(j1.isdigit()):
        if(((j1[0]+j1[1])%2)!=0):
            print("invalid")
            break
        else:
            conitnue
    elif('A,E,I,O,U,Y,-'.find(y)!=-1 or 'A E I O U Y'.find(x)!=-1):
        continue
    else:
        print("invalid ")
        break
print("valid") 

我在第二条error条件行收到if消息 我的error信使是not all argument are converted during string formatting

1 个答案:

答案 0 :(得分:1)

(((j1[0]+j1[1])%2)!=0)中,j1[0]j1[1]都是字符串,而您使用它们时就好像它们是整数一样。使用int将其转换为整数,您应该会很好;即检查(((int(j1[0]) + int(j1[1])) % 2) != 0)

具体来说,这是在假设j1 = ['8', '9']j1[0] + j1[1]的字符串。当在字符串上应用'89'时,幕后发生的事情是Python试图将其字符串格式应用于输入,这在这里是不可能的。也就是说,%会给您字符串'f%d' % 2,但是'f2'是不可能的,并会导致您所描述的错误。

'89' % 2