如何用Python通过距离和角度计算波长?代码结果不符求解
问题分析与修正方案
你的代码有三个关键问题导致结果与示例差距极大:
- 变量名混淆:你把输入的距离(对应公式中的光栅/晶面间距
d)存在nm变量,角度存在d变量,后续公式引用完全错位。 - 角度未转弧度:Python的
math.sin()函数仅接受弧度作为参数,直接传入角度值会导致三角函数计算错误。 - 公式错误:根据示例输入输出反推,正确公式为布拉格衍射公式的简化形式:
λ = 2 * d * sinθ(d是间距,θ是衍射角)。代入示例数值验证:2 * 0.025 * sin(25°) ≈ 2*0.025*0.4226 ≈ 0.0211,和教授的输出完全一致。
修正后的代码
import math print("This program calculates the wavelength given distance and angle") d = float(input("Please enter the distance (nm): ")) theta_deg = float(input("Please enter the angle (degrees): ")) theta_rad = math.radians(theta_deg) wavelength = 2 * d * math.sin(theta_rad) print(f"Wavelength is {wavelength:.4f} nm")
验证说明
输入示例中的0.025(距离)和25(角度),运行后会输出Wavelength is 0.0211 nm,与教授的示例完全匹配。代码中用math.radians()完成角度到弧度的转换,用格式化字符串控制输出小数点后四位,保证格式一致。
内容的提问来源于stack exchange,提问作者Yo Yo
相关产品推荐
相关产品推荐

