Python - 列表中的索引错误

时间:2017-09-06 09:46:06

标签: python python-3.x

我正在编写程序,在第一个方向和第二个方向输入第二行是一行中的步骤,我通过使用split('')来执行此操作所有这些输入接受while循环 但是用户不想输入更多输入他只是输入空白行并终止但是没有发生但不知道为什么......这是我的代码

while True:
movement = input().split(' ')
direction = movement[0].lower()
step = int(movement[1])
if movement != '' or movement != 0:

    if direction == 'up' or direction == 'down':
        if y == 0:
            if direction == 'down':
                y -= step
            else:
                y += step
        else:
            if direction == 'down':
                y -= step
            else:
                y += step
    elif direction == 'left' or direction == 'right':
        if x == 0:
            if direction == 'right':
                x -= step
            else:
                x += step
        else:
            if direction == 'right':
                x -= step
            else:
                x += step
else:
    current = (x, y)
    print(original)
    print(current)
    break

但我输入银行输入显示此消息

 Traceback (most recent call last):
 File "C:/Users/Zohaib/PycharmProjects/Python Assignments/Question_14.py", 
 line 04, in <module>
 step = int(movement[1])
 IndexError: list index out of range

2 个答案:

答案 0 :(得分:0)

您可以对列表执行len(),如果没有任何移动,则可以使用任何逻辑,例如

if len(movement) == 0:
    # Your logic when you don't have any input
    pass
else:
    # Your logic when you have at least one input
    pass

答案 1 :(得分:0)

将你的方向=移动[0] .lower()行移动到if语句中,这将允许它们仅在移动!=''时运行,你需要更改你的if语句o而不是总是如此因为运动不能同时为''和0

另外,也可以将拆分移动到if语句中,这样在if语句中进行比较时,只需比较移动。 (''.split()返回[])

while True:

    movement = input()
    if movement != '' and movement != '0':
        movement = movement.split()
        direction = movement[0].lower()
        step = int(movement[1])
        del movement[1]
        if direction == 'up' or direction == 'down':
            if y == 0:
                if direction == 'down':
                    y -= step
                else:
                    y += step
            else:
                if direction == 'down':
                    y -= step
                else:
                    y += step
        elif direction == 'left' or direction == 'right':
            if x == 0:
                if direction == 'right':
                    x -= step
                else:
                    x += step
            else:
                if direction == 'right':
                    x -= step
                else:
                    x += step
    else:
        current = (x, y)
        print(original)
        print(current)
        break