2015-11-16 19 views
0

爲uni做一項任務,我很困惑。我知道這一定很簡單,但對於我的生活,我無法使mapLevel2的功能在addText中使用getDistanceBetween的結果。在圖片上使用addText中的函數的結果

我知道代碼在循環中會更好,而且這是繼此之後的下一步,但我需要先讓代碼工作。

def mapLevel2(): 

    map=makePicture("C:/Users/Shaun/Documents/CPT120/Assignment 2/map.png") 

    cityXvalue= [ 45,95,182,207,256,312,328,350,374,400 ] 
    cityYvalue= [ 310,147,84,201,337,375,434,348,335,265 ] 

    writePictureTo(map,"C:/Users/Shaun/Documents/CPT120/Assignment 2/marked-map.png") 

    show (map) 

    stops=requestInteger ("How many places would you like to visit?") 

    if stops==2: 

    start=requestInteger ("Where would you like to start your trip?") 
    second= requestInteger ("What is the number of the next place you would like to visit") 

    addLine(map,cityXvalue[start],cityYvalue[start],cityXvalue[second],cityYvalue[second]) 


    KMs=getDistanceBetween(cityXvalue[start],cityYvalue[start],cityXvalue[second],cityYvalue[second]) 

    addText(map,21,34,KMs) 

    writePictureTo(map,"C:/Users/Shaun/Documents/CPT120/Assignment 2/marked-map.png") 

    repaint (map) 

def getDistanceBetween(x1,y1,x2,y2): 

    dist=sqrt(pow(x1-x2,2)+pow(y1-y2,2)) 

    KMs=dist*10 
    return KMs 

感謝您給我的任何幫助。

+0

@馬丁亨裏克森道歉,這是第一次發佈。我已經意識到我遇到的一些問題,現在有問題,在'addText'程序給我一個錯誤:「錯誤是:第四個參數不能強制爲字符串」 –

+0

@ShaunNicholls,下一次添加錯誤正確的問題(不在評論中)。 – Ilya

回答

1

如果你需要把功能getDistanceBetween的結果作爲功能addText的說法,只是做:

1)首先,你需要實現的功能getDistanceBetween

def getDistanceBetween(x1,y1,x2,y2): 
    return 10*sqrt(pow(x1-x2,2)+pow(y1-y2,2)) 

2)然後你可以使用它。例如,可以保存結果:

KMs = getDistanceBetween(cityXvalue[start],cityYvalue[start],cityXvalue[second],cityYvalue[second]) 

3)現在你可以使用這個變量KMs(也可以做同樣的,沒有中間變量):

addText(map,21,34,KMs) 

4)好吧,現在你有一個錯誤「錯誤是:第四個參數不能被強制爲字符串」。這意味着,你必須轉換浮點值轉換爲字符串(你可以閱讀here如何做到這一點):

addText(map,21,34,"{:.5f}".format(KMs)) 

或沒有中間變量:

addText(map,21,34,"{:.5f}".format(getDistanceBetween(cityXvalue[start],cityYvalue[start],cityXvalue[second],cityYvalue[second]))) 
+0

我嘗試將名稱更改爲變量_d_「但仍然出現此錯誤錯誤爲:第4個參數不能被強制爲字符串 不合適的參數類型 嘗試調用具有無效類型參數的函數。這意味着你做了一些事情,例如試圖將字符串傳遞給期望整數的方法。「 –

+0

將代碼更改爲'addText(地圖,21,34,str(KMs))',現在就可以使用。感謝您的幫助 –

相關問題