Python 函数中的Input命令在输入部分但不是全部值后再次被调用

Python 函数中的Input命令在输入部分但不是全部值后再次被调用,python,python-3.x,Python,Python 3.x,我目前正在编写一个渡轮票预订程序,该程序具有查看座位的功能(我使用的是列表)。下面的代码将成为我程序中的一个函数。运行代码时,当我输入1时,它会打印我的列表,但如果我输入任何其他值,它会要求另一个输入 例如,如果我输入2,程序要求另一个输入,如果我输入相同的值(2),它将打印我想要的内容。但是如果我在第二次请求时输入一个不同的值,比如3,它将请求第三次输入。如果我的第三个输入与第二个输入相同,它将打印我想要的内容,但如果我输入不同的值,它将开始打印并出现错误 我在一个列表中列出了所有3个轮渡座位

我目前正在编写一个渡轮票预订程序,该程序具有查看座位的功能(我使用的是列表)。下面的代码将成为我程序中的一个函数。运行代码时,当我输入1时,它会打印我的列表,但如果我输入任何其他值,它会要求另一个输入

例如,如果我输入2,程序要求另一个输入,如果我输入相同的值(2),它将打印我想要的内容。但是如果我在第二次请求时输入一个不同的值,比如3,它将请求第三次输入。如果我的第三个输入与第二个输入相同,它将打印我想要的内容,但如果我输入不同的值,它将开始打印并出现错误

我在一个列表中列出了所有3个轮渡座位,所以我写了ferry1、ferry2等等,只是为了测试

贝娄是我的全部密码。很抱歉,这篇文章的格式很差,因为这是我第一次使用复杂的程序,也是我第一次使用论坛。为什么会发生这种情况?我如何解决这个问题?提前谢谢

seatings = [  ["ferry1", "B2", "B3", "B4", "B5"],
           ["B6", "B7", "B8", "B9", "B10"],
           ["E1", "E2", "E3", "E4", "E5"],
           ["E6", "E7", "E8", "E9", "E10"],
           ["E11", "E12", "E13", "E14", "E15"],
           ["E16", "E17", "E18", "E19", "E20"],
           ["E21", "E22", "E23", "E24", "E25"],
           ["E26", "E27", "E28", "E29", "E30"],
           ["E31", "E32", "E33", "E34", "E35"],
           ["E36", "E37", "E38", "E39", "E40"],
           ["ferry2", "B2", "B3", "B4", "B5"],
           ["B6", "B7", "B8", "B9", "B10"],
           ["E1", "E2", "E3", "E4", "E5"],
           ["E6", "E7", "E8", "E9", "E10"],
           ["E11", "E12", "E13", "E14", "E15"],
           ["E16", "E17", "E18", "E19", "E20"],
           ["E21", "E22", "E23", "E24", "E25"],
           ["E26", "E27", "E28", "E29", "E30"],
           ["E31", "E32", "E33", "E34", "E35"],
           ["E36", "E37", "E38", "E39", "E40"],
           ["ferry3", "B2", "B3", "B4", "B5"],
           ["B6", "B7", "B8", "B9", "B10"],
           ["E1", "E2", "E3", "E4", "E5"],
           ["E6", "E7", "E8", "E9", "E10"],
           ["E11", "E12", "E13", "E14", "E15"],
           ["E16", "E17", "E18", "E19", "E20"],
           ["E21", "E22", "E23", "E24", "E25"],
           ["E26", "E27", "E28", "E29", "E30"],
           ["E31", "E32", "E33", "E34", "E35"],
           ["E36", "E37", "E38", "E39", "E40"] ]

import datetime
today = datetime.date.today()

def getchoice():
        ch=int(input("Please enter ferryID: "))
        return ch

if (getchoice()== 1):
        ID=1
        a=0
        b=2
        c=10
elif (getchoice()==2):
        ID=2
        a=10
        b=12
        c=20
elif (getchoice()==3):
        ID=3
        a=20
        b=22
        c=30

print("-"*35)
print("Ferry ID:", ID, "   ", "Date:",today)
print("-"*35)
print("Business Class")
for item in ferry[a:b] :
        print( "-"*33, "\n",
               item[0], " "*( 3-len( item[0] ) ),
               ":", item[1], " "*( 3-len( item[1] ) ),
               ":", item[2], " "*( 3-len( item[2] ) ),
               ":", item[3], " "*( 3-len( item[3] ) ),
               ":", item[4], " "*( 3-len( item[4] ) ))
print("-"*33)
print("Economy Class")
for item in ferry[b:c]:
        print( "-"*33, "\n",
               item[0], " "*( 3-len( item[0] ) ),
               ":", item[1], " "*( 3-len( item[1] ) ),
               ":", item[2], " "*( 3-len( item[2] ) ),
               ":", item[3], " "*( 3-len( item[3] ) ),
               ":", item[4], " "*( 3-len( item[4] ) ))
print("-"*33)

另一个问题是,我觉得座位表的打印速度非常慢,有没有办法加快打印速度?我想这会有所帮助:我不这么认为。链接中的帖子是关于在用户输入无效数据时阻止程序崩溃,但我主要担心的是,如果我没有输入1,我的函数会被调用两次。无论如何谢谢你!你可以跟着我走。也许这会让你相信你应该重新构造你的输入程序。提示:你调用getchoice()太多了。哥们,这个提示帮了大忙。问题解决了。谢谢你,伙计!