6-2 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10分)
读取若干个点,每个点放入元组。并将所有点的点信息、点的类型、点与原点的距离打印出来。
函数接口定义:
readPoint() #从一行以,分隔的数中读取坐标,放入元组并返回
distance(point) #计算point与原点的距离并返回,要math库中的函数
裁判测试程序样例:
/* 请在这里填写答案 */
n = int(input())
for i in range(n):
p = readPoint()
print(‘Point = {}, type = {}, distance = {:.3f}’.format(p,type§,distance§))
输入格式:
输入n,代表底下要输入n行点坐标。坐标全部为整数。
点坐标x,y,z以,分隔。坐标全部为整数。
注意:坐标以,分隔,相应位置可能无字符或者包含多个空格字符,读入时按照0进行处理。
输出格式:
见输出样例
输入样例:
5
1,1,1
,
2,1
3,1,3
5,
输出样例:
Point = (1, 1, 1), type = , distance = 1.732
Point = (0, 0, 0), type = , distance = 0.000
Point = (2, 0, 1), type = , distance = 2.236
Point = (3, 1, 3), type = , distance = 4.359
Point = (5, 0, 0), type = , distance = 5.000
import math
def readPoint():
p = input().split(",")
for i in range(len(p)):
try:
p[i] = eval(p[i])
if p[i]>=0:
p[i]= int(p[i])
except:
p[i] = 0
return tuple(p)
def distance(p):
return math.sqrt(int(p[0])*int(p[0])+int(p[1])*int(p[1])+int(p[2])*int(p[2]))
注意元组元素的操作只能用索引的方式,不能用for i in p 的形式操作
先以字符串的形式输入,然后异常处理进行元组的创建,最后返回元组