2013-04-10 62 views
1

我需要创建代码,它允许您检查您输入的坐标是否位于特定区域内。到目前为止,我有这样的:如何检查坐标是否位于某个区域?

import random 
import math 
import pylab 
import numpy  
pylab.close("all")              #All import statements 
x = [(random.randint(-50,50)) for i in range(10)]    #Creating list of x coordinates 
y = [(random.randint(-50,50)) for j in range(10)]    #Creating list of y coordinates 
array=zip(x,y)               #Creating an array by combining the x and y coordinates 
print array    

counter = 0         #Start of 1c, resetting counter 
for i, j in array:        #Telling what to inspect 
     if 35**2 <= (i**2+j**2) <= 65**2:     #Conditions for the coordinates to fall within 15 pixels of a circle with radius 50 
       counter+= 1       #If conditions met then add 1 to counter 
n=(1.0*counter/7000)*100       #Calculating percentage of coordinates in the region 
print "on average", n, "% of the locations in the array fall in this region" #Print result, end of part 1c 


name = raw_input('type a coordinate location: ')    #Start of 1d, python input result 
for i, j in name: 
    if i in name in array: 
     if 35**2 <= (i**2+j**2) <= 65**2: 
      print "warning, your chosen location falls near the edge of the circle" 
    else: 
     print "coordinate does not exist" 

但此刻我得到一个错误信息,说“需要1个多值解包”指的是“名称=的raw_input(”键入一个坐标位置:“)”行。我究竟做错了什么?

+0

请不要使用单字母变量名称。对于初学者来说,他们在代码中不易辨别。有意义的名称使代码更易于阅读。 当然,我可能会想到的唯一有意义的单字母变量名是x,y和z – volcano 2013-04-10 08:46:54

回答

0

name是一个字符串。你不能使用

for i, j in name:

你需要先破译它的值,并创建一个元组。

也许是这样的:

N =(name.split( ' ')[0],name.split(', ')[1]) - 假设坐标由分离','

+0

,那么代码行会在哪里?并将它取代'为我,j的名字:' – blablabla 2013-04-10 10:11:58

+0

该行代码只是一个示范。你应该用'n'替换'name',但使用比'n'更好的名字。它出现在for循环当然... – WeaselFox 2013-04-10 10:13:40

+0

好了,它的目的是将输入内容分成实际值吗?使用这种方式时,用户必须在提示时输入坐标。他们会像'x,y'一样输入吗? – blablabla 2013-04-10 10:16:10

0

“raw_input”返回一个字符串。你需要分割()它并将数字转换为整数

相关问题