1

我正在尝试在 Python 中制作一个基本的转换程序,以在给定频率(反之亦然)时计算光子的波长,因为我的计算器使用起来真的很令人沮丧。它适用于我的第一次计算:

Convert to frequency or wavelength? (hz/wl) hz
What is the wavelength? 7.24e-07
414364640883977.0

但是当我试图转换成波长并给它一个 4.80e15 的频率时,它只是返回“0.0”:

Convert to frequency or wavelength? (hz/wl) wl
What is the frequency? 4.80e015
0.0

是不是哪里有问题?我导入了数学和数字,以防万一可能会解决问题,但似乎没有帮助。

def converter():
    import numbers
    import math
    conversion = input("Convert to frequency or wavelength? (hz/wl) ")

    if conversion == "hz":
        wl = eval(input("What is the wavelength? "))
        c = 3.00e08
        hz = c // wl
        print(hz)
    if conversion == "wl":
        hz = eval(input("What is the frequency? "))
        c = 3.00e08
        wl = c // hz
        print(wl)

converter()

我尝试了其他几个值,并降低了整体规模(使所有内容减少 10^8),但这并没有改变任何东西。

4

1 回答 1

1

//是 Python 中的地板除法。您确定要浮动除法吗?

>>> 3e8 // 4.8e15  # returns the floor
0.0
>>> 3e8 / 4.8e15
6.25e-08

换句话说,在您的代码中替换//为。/我打赌你会更快乐 ;-)

于 2013-09-19T04:18:45.197 回答