我试着创建一个模块化的程序(作为一本书的练习作业之一),它要求用户提供速度(mph)和行驶时间(hrs),然后(使用一个循环)我试图显示车辆在旅程中每小时行驶的距离。在
我正试图以模块化的方式构建我的模块,因此def
问题:调试时,我得到一个TypeError: 'float' object cannot be interpreted as an integer
def userJourneySpeed():
vehicleSpeed = float(input("Please enter the speed of your vehicle: "))
return vehicleSpeed
def userJourneyTime():
hoursTraveled = float(input("Please enter how many hours you traveled: "))
return hoursTraveled
def printSpec(hoursTraveled, vehicleSpeed):
print("Hour", "\tDistance Traveled")
for currentHour in range(1, hoursTraveled + 1):
userDistanceTraveled = vehicleSpeed * currentHour
print(currentHour, "\t", userDistanceTraveled)
def mainProgram():
vehicleSpeed = userJourneySpeed()
hoursTraveled = userJourneyTime()
printSpec(hoursTraveled, vehicleSpeed)
mainProgram()
如果有任何关于我哪里出错的建议,我们将不胜感激!在
hoursTraveled
从您的输入转换为float。在然后在printSpec的range函数中使用它。因为它是一个浮点函数,所以range函数抛出您提供的错误。在
可以通过将hoursrepraveled的输入立即转换为int,或者在range函数的第二个参数中这样做来解决这个问题。在
举个简单的例子:
这个错误源于试图获取浮点的范围。为了避免这种情况,您必须考虑
print_spec
函数中的浮动。在以模块化的方式编写程序是非常好的实践。向你致敬。需要记住的是,模块化的一个关键方面是将相似的操作组合在一起。考虑到这一点,在单个函数中收集用户数据是有意义的。这样你的程序就保持了它的模块性,减少了零碎。在
本着鼓励良好实践的精神,记录代码是个好主意。在函数顶部添加docstring来指定预期的参数、retrn类型和函数用途的一般概述是一个很好的实践,它对理解和调试代码有很大帮助。在
您可以参考pep8来获得更多关于python风格的好技巧。在
下面是您的代码与一些小的变化,使它工作如您所愿。 我把
Cumulative Distance Traveled
这个词包括在打印输出中,因为这是你每小时实际计算的。在此外,我还包括了用小时处理案件的功能。在
相关问题 更多 >
编程相关推荐