计算出两点之间的距离
日常旁白:本人是一枚生物学的学生,由于对生物信息学特别感兴趣,于是想自学生物信息学(新手莫怪)。了解到生物信息学要有编程基础,尤其是要会一门编程语言,例如:R语言、Python、Perl等,还要熟悉Linux系统,作为生信小白,听说Python挺简单的,于是就自学了Python,花了两天时间了解了Python的基础语法后,今天想做个练习题试试手(实践是检验真理的唯一标准),下面是练习题:(试题来源:《PYTHON生物信息学数据管理》)
试题02
书中答案原代码如下:
from math import *
x1,y1,z1 = 0.1,0.0,-0.7
x2,y2,z2 = 0.5,-1.0,2.7
dx = x1-x2
dy = y1-y2
dz = z1-z2
dsquare = pow(dx,2)+pow(dy,2)+pow(dz,2)
d = sqrt(dsquare)
print(d)
为了将所学内容活用,充分理解思路,特拆分讲解。(嫌麻烦的可以直接查看最后的升级版代码)
第一步:导入math模块
from math import *
第二步:获取两个点的坐标
①方便随时计算用户输入的两点的坐标并计算出两个点之间的距离。特增加了获取用户输入的input()函数。
#获取用户输入
x1,y1,z1=input("请依次输入点1纵横坐标的值:",)
x2,y2,z2=input("请依次输入点2纵横坐标的值:",)
②为了简化同时获取用户输入的点的坐标的三个值,使用了切片功能。split(',')表示以“,”作为分隔符,切割用户输入的三个字符。
x1,y1,z1=input("请依次输入点1纵横坐标的值:",).split(',')
x2,y2,z2=input("请依次输入点2纵横坐标的值:",).split(',')
第三步:编写计算公式
①计算差值
由于系统默认用户输入的是字符,所以使用下面的代码计算可能会报错
dx = x1-x2
dy = y1-y2
dz = z1-z2
因此增加了eval()函数,将字符串转化为数值,方便下面的计算,代码如下:
dx = eval(x1) -eval(x2)
dy = eval(y1) -eval(y2)
dz = eval(z1) -eval(z2)
②计算公式
计算公式代码如下:
dsquare = pow(dx,2)+pow(dy,2)+pow(dz,2)
d = sqrt(dsquare)
第四步:输出结果
print(d)
最后将代码总结如下:
from math import *
#获取用户输入
x1,y1,z1=input("请依次输入点1纵横坐标的值:",).split(',')
x2,y2,z2=input("请依次输入点2纵横坐标的值:",).split(',')
dx = eval(x1) -eval(x2)
dy = eval(y1) -eval(y2)
dz = eval(z1) -eval(z2)
dsquare = pow(dx,2)+pow(dy,2)+pow(dz,2)
d = sqrt(dsquare)
print(d)
虽然这是个小小的计算程序,但对于初学者的我来说每一次对原代码的升级改造,哪怕是读懂后的注释都感觉是一次进步提升,总之代码虽小,动手最重要!希望更多学习Python的爱好者不要像我一样眼高手低,学习编程就是要,思考,敲码,思考,敲码,敲码,再敲码!