簡體   English   中英

用於家庭作業的Python中的回溯錯誤

[英]Traceback error in Python for homework assignment

獲取跟蹤錯誤如下:

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

無法弄清楚如何讓這些一起工作。 我不知道我做錯了什么。 我已經多次閱讀了本書的相關部分。 我覺得我忽略了一些相當簡單的東西,它只是沒有向我跳出來。

字符串格式

舊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. 命名。 您將名為main的函數傳遞給名為falling_distance的函數。 可能不是你想要做的(絕對不是提供的代碼)。 如果你仔細地重命名一切,我猜測大多數問題都會隨着一些額外的調試而消失。
  2. 在calling_distance中,你再次調用函數main ,這似乎會讓你陷入無限循環。 這與問題#1有關,但是知道你需要修改你在下降距離中使用傳遞參數的方式
  3. 如果您正在使用python 2,我認為在打印表結果時會遇到打印問題
  4. get_time正在for循環中重新分配,這似乎並不打算。 你想在這里用一個新變量替換它
  5. 如果您正在使用python 2,我希望您的falling_distance函數將始終返回0.這是因為(1/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

肯定是命名問題導致了很多問題。

謝謝您的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM