你能在这个for循环中使用浮点数吗?

时间:2016-09-27 01:17:44

标签: python-3.x for-loop range user-input

我需要一些帮助。 我试图让我的for循环工作小数,但我的代码不能接受浮动,我不知道下一步该做什么。任何人都可以指出我哪里出错了吗?

它是用于将Celsius转换为Fahrenheit的代码,用户定义的步骤(Delta)。这是:

def main():

    # Handshake
    print("This program will convert a range of Celsius degrees to")
    print("Fahrenheit degrees based on your input.")

    # Ask and read low end of range
    Rangelow = eval(input("Enter the low end of your range: "))

    # Ask and read top end of range
    Rangehigh = 1 + eval(input("Enter the high end of your range: "))

    # Ask and read Delta
    Delta = eval(input("Enter the Delta for your range: "))

    #Display output
    print("Celsius to Fahrenheit by", Delta)
    for i in range(Rangelow, Rangehigh, Delta):
        print(i, "               ", 9/5 * i + 32)



main()

这是我的意思的一个例子:

此程序会将摄氏度范围转换为 华氏度根据您的输入而定。 输入范围的低端:3.8 输入范围的高端:14.7 输入您的范围的Delta:1.1 摄氏度到华氏度1.1 Traceback(最近一次调用最后一次):   文件" C:\ Users \ jarre \ Desktop \ Python Programs \ Conversion.py",第27行,in     主要()   文件" C:\ Users \ jarre \ Desktop \ Python程序\ Conversion.py",第22行,主要     我在范围内(Rangelow,Rangehigh + 1,Delta): TypeError:' float' object不能解释为整数

我应该注意问题似乎在于输入,输出转换后输出没有问题抛出小数。

1 个答案:

答案 0 :(得分:3)

你不能使用内置的浮点数/小数增量,但构建自己的生成器相当容易:

def decimal_range(start, stop, increment):
    while start < stop: # and not math.isclose(start, stop): Py>3.5
        yield start
        start += increment

for i in decimal_range(Rangelow, Rangehigh, Delta):
    ...

或者你可以使用numpy,但这感觉就像一把大锤破解坚果:

import numpy as np
for i in np.arange(Rangelow, Rangehigh, Delta):
    ...