任务描述
本关任务:编写一个能打印氢原子电子跃迁释放的能量的表格的小程序。
相关知识
氢原子电子跃迁
电子从一个能级跃迁到另外一个能级时会释放出相应的能力,具体的,从能级ni跃迁到能级nf所释放的能量为:
ΔEn=−\df8ε02h2mee4⋅(\dfni21−\dfnf21)
其中: me=9.1094×10−31kg是电子质量; e=1.6022×10−19C是基本电荷; ε0=8.8542×10−12C2s2kg−1m−3是真空介电常数; h=6.6261×10−34Js是普朗克常量。
循环与列表
本关实训涉及到的循环与列表核心知识点请参考实训《Python计算思维训练 - 循环与列表(一)》的相关内容和授课视频。
编程要求
请在右侧编辑器的EnList
函数中,打印出电子跃迁到某个能级时的释放的能量的表格。
这个函数有一个参数maxn
,代表要输出的行数,范围为 1 - 20 。
表格总共 5 列,从左至右依次代表电子的起始能级 1 - 5 。表格的每一行代表不同起始能级的电子跃迁到此能级所释放的能量。表格从能级 1 开始。
注意:需要打印表头,以及控制表格格式,具体要求请见测试说明。
输入数据由评测系统负责读取并传递给EnList
函数,学生只需要关注这个函数的实现。
测试说明
测试代码会按照如下方式调用这两个函数:
maxn = int(input())
EnList(maxn)
本关测试样例如下。
测试输入: 3
预期输出:
|能级1 能级2 能级3 能级4 能级5
--------------------------------------------------------------------------------
1 | -0.000000E+00 1.634983E-18 1.937758E-18 2.043729E-18 2.092779E-18
2 | -1.634983E-18 -0.000000E+00 3.027747E-19 4.087458E-19 4.577953E-19
3 | -1.937758E-18 -3.027747E-19 -0.000000E+00 1.059711E-19 1.550206E-19
注意:
-
表头的文字之间的空白是两个制表符
\t
。 -
表内每一行的数据之间的空白部分是一个制表符
\t
。 -
数据使用指数格式输出,即
{:E}
。
由于网页渲染的原因,上面的结果在格式上与真实结果有差异,可以参考测试集 1 的预期输出。
开始你的任务吧,祝你成功!
def EnList(maxn): # 请在这里编写程序,打印跃迁能量表 me = 9.1094e-31 e = 1.6022e-19 epsilon0 = 8.8542e-12 h = 6.6261e-34 print(" |能级1\t\t能级2\t\t能级3\t\t能级4\t\t能级5") print("--------------------------------------------------------------------------------") list_en = [] list_i = [0, 0, 0, 0, 0] for i in range(1, 6): list_en.append(-(me * e ** 4) / (8 * (epsilon0 ** 2) * h ** 2) * 1 / (i * i)) for i in range(6, maxn + 1): list_en.append(-(me * e ** 4) / (8 * (epsilon0 ** 2) * h ** 2) * 1 / (i * i)) for i in range(1, maxn + 1): for j in range(1, 6): list_i[j - 1] = list_en[j - 1] - list_en[i - 1] if list_i[j - 1] == 0.000000E+00: list_i[j - 1] = -0.000000E+00 print('{:} | {:.6E}\t{:.6E}\t{:.6E}\t{:.6E}\t{:.6E}\t'.format(i, list_i[0], list_i[1], list_i[2], list_i[3], list_i[4]))