def short_distance(origins,(x,y),gap):
for (i,j) in origins.spilt(「 」):
h=[]
h.append(float(math.sqrt ((i-x)*(i-x)+(j-y)*(j-y))))
for n in h:
if not gap < n:
print 0
if gap < n :
print n
-4
A
回答
2
- 該縮進是錯誤的;在
for
迴路應縮進比def
- 錯字更多:
origins.spilt(" ")
大概應該是origins.split(" ")
2
您的代碼也許是從origins
是接近(x, y)
找到點。其中有很多錯誤:
- 凹陷是錯誤的。
split()
方法拼錯了。split()
方法返回扁平列表,而您期待的列表對。
前兩個很容易修復。在不知道origins
字符串格式的情況下,我無法確定你想要什麼。有關如何將平面列表轉換爲列表對的解決方案,請參見this question。
還要注意的是if
語句else
條款,所以你可以寫:
if gap < n:
print n
else:
print 0
0
- 你需要導入數學
- 縮進是錯誤的
- 如果起源就像是一個字符串
'1,1 2,2 3,3'
,Origins.split(" ")
會給你一個字符串列表["1,1", "2,2", "3,3"]
。您需要做一些額外的工作才能將它與for循環一起使用for (i,j) in ...
您需要一個元組列表,如[(1,1),(2,2),(3,3)] math.sqrt
已經返回一個浮點數,所以你可以離開它
4
我會寫更類似這樣的代碼。如果您運行代碼,它將報告任何失敗的測試(其中沒有測試)。
import math
def short_distance(origins, point, gap):
"""
Describe origins, point, and gap are and what the
expected outcome is.
Then provide an example that tests the code
>>> short_distance('1,2 3,4', (5,6), 1.5)
5.65685424949
2.82842712475
"""
origins = parse_origins(origins)
distance_to_point = lambda point2: point_distance(point, point2)
# what's a better name for h?
h = map(distance_to_point, origins)
report(h, gap)
def report(h, gap):
"""
Take the results of the distances and report on them
"""
for distance in h:
if not (gap < distance):
print 0
else:
print distance
def point_distance(p1, p2):
"""
Calculate the distance between two points
>>> point_distance((0,0), (1,0))
1.0
more than one test here would be good
"""
x1, y1 = p1
x2, y2 = p2
return math.sqrt((x1-x2)**2 + (y1-y2)**2)
def parse_origins(origin_string):
"""
Parse an origins string.
>>> parse_origins('1,2 3,4')
((1.0, 2.0), (3.0, 4.0))
"""
points = origin_string.split(' ')
return tuple(map(parse_point, points))
def parse_point(point_string):
"""
Take a string like 1,2 and return a tuple of the numbers
in that string.
>>> parse_point('1,2.0')
(1.0, 2.0)
"""
return tuple(map(float, point_string.split(',')))
def test():
import doctest
doctest.testmod()
if __name__ == '__main__':
test()
0
下面的代碼:
from math import sqrt
def short_distance(origins,(x,y),gap):
def distance(i, j):
ix, iy = i - x, j - y
return sqrt (ix*ix + iy*iy)
all_distances = (distance(float(i), float(j)) for (i,j) in origins)
for n in all_distances:
print (0 if gap >= n else n)
,然後用它是這樣的:
>>> origin = (0, 0)
>>> points = [(1, 1), (2, 1), (1, 2), (2, 2)]
>>> gap = 1.5
>>> short_distance(points, origin, gap)
0
2.2360679775
2.2360679775
2.82842712475
我最好的猜測是這樣的你想要做什麼。
相關問題
- 1. 這個短程序有什麼問題?
- 2. 這個QuickSort程序有什麼問題?
- 3. 這個Android程序有什麼問題?
- 4. 這個Clojure程序有什麼問題?
- 5. 這個C程序有什麼問題?
- 6. 這個C程序有什麼問題?
- 7. 這個C++程序有什麼問題?
- 8. 這個程序有什麼問題?
- 9. 這個C++程序有什麼問題?我什麼都試過
- 10. 這個程序出了什麼問題?
- 11. 這個javascript排序有什麼問題
- 12. 有沒有人知道這個程序有什麼問題?
- 13. 這個用於XML的序列化程序有什麼問題?
- 14. 這個數組程序有什麼問題?
- 15. python中的迴文邏輯:這個程序有什麼問題?
- 16. 這個C程序有什麼問題? (全局變量)
- 17. 我不知道這個python程序中有什麼問題
- 18. 這個程序有什麼問題?無法調試
- 19. 這個Hibernate/Spring應用程序(獨立)有什麼問題?
- 20. 在cplusplus中使用fstream時,這個程序有什麼問題
- 21. 這個CGI/HTML/Perl程序有什麼問題?
- 22. 這個平頂採樣程序有什麼問題?
- 23. Java - 這個簡單的程序有什麼問題?
- 24. 這個替換程序在JavaScript中有什麼問題?
- 25. python中的這個旋轉程序有什麼問題?
- 26. 這個Apache安裝程序有什麼問題?
- 27. 這個Perl子程序有什麼問題?
- 28. 這個簡短的程序有什麼問題(MySQL)
- 29. 這個C++程序有什麼問題?它核心轉儲
- 30. 這個程序有什麼問題? (字符串相關)
它沒有文檔! :P – 2009-11-15 09:27:14
哈哈。他的意思是,如果你解釋你正在做的事情,以及實際發生的事情,我們會更容易地提供幫助 – 2009-11-15 09:28:14
我們將需要更多的細節。這個函數用於什麼? – 2009-11-15 09:29:15