如何将奇偶数字拆分至两个列表直至均达到指定长度?
问题解决建议
你的核心问题是循环条件和元素添加逻辑不匹配:
- 用
or的循环条件方向是对的(只要有一个列表没满5就继续输入),但没做「满5的列表不再接收新元素」的判断,导致满了的列表还会被继续添加元素; - 换成
and的话,循环会在第一个列表满5时就终止,另一个列表没法凑够5个元素。
修改方案很简单:保持or的循环条件,在添加元素前先判断对应列表是否还没满5,满了就跳过添加操作。这样既能保证循环运行到两个列表都满5才停止,又不会给已经满的列表多加元素。
修改后的代码:
even_list = [] odd_list = [] while len(even_list) < 5 or len(odd_list) < 5: a = int(input("Insert a number: ")) if a % 2 == 0: if len(even_list) < 5: # 仅当偶数列表未满时才添加 even_list.append(a) else: if len(odd_list) < 5: # 仅当奇数列表未满时才添加 odd_list.append(a) print(f"Even numbers inserted are: {even_list}") print(f"Odd numbers inserted are: {odd_list}")
测试效果:当偶数列表已经有5个元素后,再输入偶数会被忽略,直到奇数列表也凑够5个,循环自动停止;反之亦然,完全符合需求。
内容的提问来源于stack exchange,提问作者user22387606
相关产品推荐
相关产品推荐

