python中的列表无法在命令作为字符串传递的地方工作

时间:2015-08-03 20:04:22

标签: python string list python-3.x

这是给定的输入序列,我们必须让List认为上面的命令将由用户作为输入给出。

12
insert 0 5
insert 1 10
insert 0 6
print 
remove 6
append 9
append 1
sort 
print
pop
reverse
print

以下操作的结果应该是这样的 -

  

[6,5,10]   [1,5,9,10]   [9,5,1]

以下代码将读取以文本形式给出的命令,其中第一行将是必须遵循的命令的总数,并且以下命令将作为文本给出。但代码对我来说不起作用它是不打印任何东西。为什么会这样?请提供此问题的解决方案。

L=[]
li=[]
def check(string):
for a in string:
    if a=='insert':
        li=string.split()
        L.insert(int(li[1]),int(li[2]))
        li=[]
    elif(a=='append'):
        li=string.split()
        L.append(int(li[1]))
        li=[]
    elif(a=='sort'):
        L.sort()
    elif(a=='remove'):
        li=string.split()
        L.remove(li[1])
        li=[]
    elif(a=='print'):
        print(L) 
    elif(a=='reverse'):
        L.reverse()
    elif a=='pop':
        L=L[:-2]
    else:
        pass
N=int(input(""))
for i in range(N):
    string =str(input(""))
    check(string)

2 个答案:

答案 0 :(得分:1)

看起来代码for a in string在方法check()处循环,迭代字符串的每个字母,因此不会执行任何操作......它总是会传递'。

答案 1 :(得分:1)

def check(string,L,li):
    for a in map(str,string.split()):
            if a =='insert':
                li=string.split()
                L.insert(int(li[1]),int(li[2]))
                li=[]
            elif(a=='append'):
                li=string.split()
                L.append(int(li[1]))
                li=[]
            elif(a=='sort'):
                L.sort()
            elif(a=='remove'):
                li=string.split()
                L.remove(li[1])
                li=[]
            elif(a=='print'):
                print(L) 
            elif(a=='reverse'):
                L.reverse()
            elif a=='pop':
                L=L[:-2]
        else:
                pass
        break
N=int(input(""))
L = []
li = []
for i in range(N):
    string =raw_input("")
check(string,L,li)