You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成数字列表并实现偶数在前、奇数在后的排序?

问题描述

"我是一位世界知名的时装设计师,即将为下个月的时装周筛选新模特。我让他们都佩戴不同的编号,我需要你将偶数编号的模特和奇数编号的模特分开,确保偶数编号的模特排在前面。我不在乎他们说这是编号歧视,我只是偏爱偶数,没问题吧?这并不奇怪!"

预期输出示例

Enter the number of elements: 4
Element #1: 6
Element #2: 5
Element #3: 17
Element #4: 12

Arranged Elements:
Element #1: 6
Element #2: 12
Element #3: 5
Element #4: 17

如你所见,元素列表已按偶数在前、奇数在后的顺序排列。

当前代码

num_list = []
listLength = int(input("Enter the number of elements: "))
num = 1

for i in range(listLength):
  el = int(input("Element #%d: " % num))
  num += 1
    if el % 2 == 0:
        num_list.append(el)
    elif el % 2 != 0::
         num_list.append(el)
print(num_list)

需求

实现输入数字列表后,将偶数放在前面、奇数放在后面的排序功能,但当前代码无法达成该效果,需要修复。


解决方案

你的代码存在两个核心问题:

  • 语法错误:elif el % 2 != 0::多了一个冒号,且if语句缩进不正确
  • 逻辑错误:直接将所有元素按输入顺序追加到同一个列表,没有区分偶数和奇数的位置

以下是修复后的代码,完全符合你的需求:

# 分别初始化偶数和奇数列表
even_models = []
odd_models = []
total = int(input("Enter the number of elements: "))

# 收集输入的编号
for i in range(1, total + 1):
    model_id = int(input(f"Element #{i}: "))
    if model_id % 2 == 0:
        even_models.append(model_id)
    else:
        odd_models.append(model_id)

# 合并列表:偶数在前,奇数在后
arranged_models = even_models + odd_models

# 按示例格式输出结果
print("\nArranged Elements:")
for idx, model_id in enumerate(arranged_models, start=1):
    print(f"Element #{idx}: {model_id}")

代码说明

  1. 分离存储:用两个列表分别存放偶数和奇数编号,确保所有偶数自然排在奇数前面
  2. 语法修复:修正了原代码的缩进错误和多余冒号问题
  3. 格式匹配:使用enumerate配合start=1实现示例中的序号输出,用f-string让字符串格式化更简洁
  4. 逻辑清晰:先收集所有输入,再合并输出,完全符合你要的排序规则

内容的提问来源于stack exchange,提问作者Xiofuliangmei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:15:55