网络草包 发表于 2026-5-30 18:16:11

新人学习贴_打印菱形

本帖最后由 网络草包 于 2026-5-30 18:19 编辑

#需求:定义一个函数,该函数接收一个正整数参数rows,其功能是打印出一个由星号*构成的,具有rows指定行数的菱形图案
def diamond(rows):
    if rows % 2 == 0:
      print(f"{rows}不是奇数")
      return

    for i in range(1,rows,2):
      mid = (rows-i) // 2
      k = i
      print(" " * mid + "*" * k)

    for i in range(rows,0,-2):
      mid = (rows-i) // 2
      k = i
      print(" " * (mid) + "*" * k)
diamond(11)

FishC 发表于 2026-5-30 18:16:21

首先,需要明确一个问题:函数名不要使用 list,因为 list 是 Python 内置函数名,会造成冲突。建议用 swap_elements 或 swap_list。下面是一个最简洁的实现,利用 Python 的元组解包一次性完成交换:


def swap_elements(lst, pos1, pos2):
    # 如果你希望检查索引是否越界,可以加一个判断,但这里保持最简
    lst, lst = lst, lst


调用示例:

my_list =
swap_elements(my_list, 1, 3)
print(my_list)# 输出


这个函数会直接修改原列表。如果你不想修改原列表,可以先复制再交换:

def swap_elements_copy(lst, pos1, pos2):
    new_lst = lst[:]          # 复制一份
    new_lst, new_lst = new_lst, new_lst
    return new_lst


注意:传入的索引必须有效(0 到 len(lst)-1),如果超出范围会报 IndexError。新人的话,可以先不用检查,掌握基本交换后再考虑健壮性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 新人学习贴_打印菱形