第二功能计划。一些询问

时间:2014-12-21 02:24:14

标签: python

我的书要求我使用函数创建另一个程序,这个问题是我需要让它更复杂一点,所以不要去做一个简单的添加我尝试解决一个非常简单的物理问题,用户使用两个函数(速度和加速度)给我的值。

这是该计划的目标(sampledoc)

  
      
  1. 创建一个读取并打印此txt文档的程序
  2.   
  3. 介绍程序和脚本名称
  4.   
  5. 使用函数解决问题,使函数更复杂

         
        
    • 用户给出距离(x)和时间(t)
    •   
    • 程序计算速度和加速度
    •   
  6.   
  7. 创建新的txt文档并将结果写入其中

  8.   
  9. 直接从新文档中打印问题的结果。
  10.   

以下是代码:

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的问题,然而,我尝试了两种并且没有取得丰硕成果。

1 个答案:

答案 0 :(得分:0)

您在此处传递功能

accel = acceleration (velocity, t)

velocity不是浮点值;它是一个功能对象。你可能打算在这里使用vel,这是你在前一行计算的:

vel = velocity(x, t)
accel = acceleration(vel, t)