鱼C论坛

 找回密码
 立即注册
查看: 22|回复: 1

[学习笔记] 新人学习贴_打印菱形

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

  9.     for i in range(rows,0,-2):
  10.         mid = (rows-i) // 2
  11.         k = i
  12.         print(" " * (mid) + "*" * k)
  13. diamond(11)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
首先,需要明确一个问题:函数名不要使用 list,因为 list 是 Python 内置函数名,会造成冲突。建议用 swap_elementsswap_list。下面是一个最简洁的实现,利用 Python 的元组解包一次性完成交换:


  1. def swap_elements(lst, pos1, pos2):
  2.     # 如果你希望检查索引是否越界,可以加一个判断,但这里保持最简
  3.     lst[pos1], lst[pos2] = lst[pos2], lst[pos1]
复制代码


调用示例:

  1. my_list = [10, 20, 30, 40, 50]
  2. swap_elements(my_list, 1, 3)
  3. print(my_list)  # 输出 [10, 40, 30, 20, 50]
复制代码


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

  1. def swap_elements_copy(lst, pos1, pos2):
  2.     new_lst = lst[:]          # 复制一份
  3.     new_lst[pos1], new_lst[pos2] = new_lst[pos2], new_lst[pos1]
  4.     return new_lst
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-5-30 22:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表