【问题标题】:why does this .append only append the even numbered strings?为什么这个 .append 只附加偶数字符串?
【发布时间】:2020-09-03 08:28:56
【问题描述】:
guest_list = []
while input() != '.':
    guest = input()
    guest_list.append(guest)
print(f'{guest_list}\n{len(guest_list)}')

为什么这个代码只附加偶数的客人? 例如,如果我输入名字: Katja - Adam - Eva - Nicholas - 。

打印将是:

['Adam', 'Nicholas'] \n 2

还有,我该如何解决这个问题?

【问题讨论】:

    标签: python-3.x append


    【解决方案1】:

    你的支票 while input() 吃掉了你一半的名字:

    guest_list = []
    while input() != '.':       # THIS input is not added to the list.
        guest = input()
        guest_list.append(guest)
    print(f'{guest_list}\n{len(guest_list)}')
    

    修复:

    guest_list = []
    while not guest_list or guest_list[-1] != '.':
        guest = input()
        guest_list.append(guest)
    
    guest_list[:] = guest_list [:-1]
    print(f'{guest_list}\n{len(guest_list)}')
    

    更好:

    guest_list = []
    while True:
        guest = input()
        if guest == '.':
            break
        guest_list.append(guest)
    
    print(f'{guest_list}\n{len(guest_list)}')
    

    【讨论】:

    • 我不认为这是正确的,因为一旦我启动这个程序,它就会打印 [ ] \n 0 并关闭
    • @Sebas - 使用第二个版本。修复了第一个。
    • 感谢您的解决方案!我仍然不清楚的一件事是为什么 while input()"eats" 我输入的一半。有人可以解释一下吗? ——
    • @sebas 每个input() 使用一个输入,这就是为什么:您输入while - 条件测试会使用一个输入名称。但您没有将其添加到您的列表中。然后您输入另一个名称,即被添加,然后返回到 while 循环条件测试。再次未添加等。
    猜你喜欢
    • 2015-02-11
    • 2016-06-09
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多