获取如下追溯错误:
Traceback (most recent call last):
File "F:\Python Codes\Falling Distance\hodge_Lab5b.py", line 12, in <module>
main()
File "F:\Python Codes\Falling Distance\hodge_Lab5b.py", line 9, in main
print(get_time, '\t', format(falling_distance, '.2f'))
TypeError: unsupported format string passed to function.__format__
#file 1 named hodge_Lab5b.py
def main():
from falling_distance import falling_distance
get_time = int(input("Enter the time, in seconds, the object has been falling: "))
print("Time",'\t' "Distance")
print("--------------------------")
for get_time in range (1,11):
print(get_time, '\t', format(falling_distance(main), '.2f'))
return get_time
main()
#File 2 named falling_distance.py
def falling_distance(main):
gravity = 9.8
fallingTime = main()
distance = (1/2)*gravity*(fallingTime**2)
return distance
无法弄清楚如何使它们协同工作。我不知道我做错了什么。我已多次阅读书中的相关部分。我觉得我正在忽略一些简单的事情,只是没有跳出来。
答案 0 :(得分:0)
字符串格式
旧的python:'%s %s' % ('one', 'two')
新python:'{} {}'.format('one', 'two')
还
for get_time in range(1,11):
将迭代1,2,3 ... 10
您可能想这样做
for sec_nb in range(1, get_time+1):
print('falling time: {} \t falling dist: {}'.format(sec_nb, falling_distance(sec_nb)))
您要将数字传递给falling_distance
函数,而不是函数
答案 1 :(得分:0)
您似乎在这里遇到了一些问题。由于这是家庭作业,因此我不愿提供任何代码。我看到了几个问题:
main
的函数传递给名为falling_distance
的函数。 可能不是您想要做的(绝对不是提供的代码)。如果您仔细地重命名所有内容,我想大多数问题将通过一些额外的调试而消失。main
,这似乎使您陷入无限循环。这与问题#1有关,但是您需要修改在下降距离中使用传递的参数的方式get_time
正在for循环中重新分配,这似乎不是故意的。您将要在此处用新变量替换它(1/2)
将被解释为0
(由于整数除法)。一旦知道了分子,就应该最后进行除法。我还看到了其他一些问题,而且从长远来看,还有一些样式和约定问题也更重要。
祝你好运
答案 2 :(得分:0)
这就是我终于发现可以工作的地方。感谢您的帮助。
#file 1
def main():
print( "Time\tFalling Distance\n-----------------------" )
from falling_distance import fallingDistance
for currentTime in range(1,11):
print(currentTime, "\t", format(fallingDistance(currentTime),\
".2f"))
main()
#file 2
def fallingDistance(fallingTime):
gravity=9.8
distance=(1/2)*gravity*(fallingTime**2)
return distance
当然可以命名引起很多问题的问题。
谢谢您的帮助!