我的书要求我使用函数创建另一个程序,这个问题是我需要让它更复杂一点,所以不要去做一个简单的添加我尝试解决一个非常简单的物理问题,用户使用两个函数(速度和加速度)给我的值。
这是该计划的目标(sampledoc)
- 创建一个读取并打印此txt文档的程序
- 介绍程序和脚本名称
使用函数解决问题,使函数更复杂
- 用户给出距离(x)和时间(t)
- 程序计算速度和加速度
创建新的txt文档并将结果写入其中
- 直接从新文档中打印问题的结果。
醇>
以下是代码:
from sys import argv
script, textf = argv; sampledoc = open(textf)
def velocity (x, t):
vel = (float(x)) / (float(t))
return float(vel)
def acceleration (v, t):
accel = (float(v)) / (float(t))
return float(accel)
print "Hello my name is TAR or as my creator called me %s" % script; print sampledoc.read(); sampledoc.close()
print "Results will be printed on a new text document, thanks for your preference"
x = float(raw_input("Please introduce the Distance")); t = float(raw_input("Please introduce the time:... "))
vel = velocity(x, t)
accel = acceleration (velocity, t)
results = 'ResultsP.txt'
new_file = open(results, 'w')
new_file.write(str(vel)); new_file.write(str(accel))
new_file.close()
new_file.open(results, 'r')
print new_file.read()
new_file.close()
我知道这里有什么不对的地方,但我的大脑现在还没有工作,我想这与我试图解决这个问题的方式有关或者&#39 ;'浮子''我在函数中使用了,因为我收到了这个错误:
File "ex21Study.py", line 20, in <module>
accel = acceleration (velocity, t)
File "ex21Study.py", line 10, in acceleration
accel = (float(v)) / (float(t))
TypeError: float() argument must be a string or a number
我用Google搜索了这个问题,并在其他类似的问题上找到了一些答案,这些问题说明了将结果转换为float或str的问题,然而,我尝试了两种并且没有取得丰硕成果。
答案 0 :(得分:0)
您在此处传递功能:
accel = acceleration (velocity, t)
velocity
不是浮点值;它是一个功能对象。你可能打算在这里使用vel
,这是你在前一行计算的:
vel = velocity(x, t)
accel = acceleration(vel, t)