用于作业分配的Python中的回溯错误

时间:2019-04-07 22:46:01

标签: python

获取如下追溯错误:

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

无法弄清楚如何使它们协同工作。我不知道我做错了什么。我已多次阅读书中的相关部分。我觉得我正在忽略一些简单的事情,只是没有跳出来。

3 个答案:

答案 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)

您似乎在这里遇到了一些问题。由于这是家庭作业,因此我不愿提供任何代码。我看到了几个问题:

  1. 命名。您正在将名为main的函数传递给名为falling_distance的函数。 可能不是您想要做的(绝对不是提供的代码)。如果您仔细地重命名所有内容,我想大多数问题将通过一些额外的调试而消失。
  2. 在calling_distance中,您再次调用函数main,这似乎使您陷入无限循环。这与问题#1有关,但是您需要修改在下降距离中使用传递的参数的方式
  3. 如果您使用的是python 2,我认为您在打印表格结果时会遇到打印问题
  4. get_time正在for循环中重新分配,这似乎不是故意的。您将要在此处用新变量替换它
  5. 如果您使用的是python 2,我希望您的falling_distance函数将始终返回0。这是因为(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

当然可以命名引起很多问题的问题。

谢谢您的帮助!