自學(xué)生信Python(第二天)|計(jì)算出兩點(diǎn)之間的距離

計(jì)算出兩點(diǎn)之間的距離

日常旁白:本人是一枚生物學(xué)的學(xué)生,由于對(duì)生物信息學(xué)特別感興趣,于是想自學(xué)生物信息學(xué)(新手莫怪)。了解到生物信息學(xué)要有編程基礎(chǔ),尤其是要會(huì)一門編程語(yǔ)言,例如:R語(yǔ)言、Python、Perl等,還要熟悉Linux系統(tǒng),作為生信小白,聽(tīng)說(shuō)Python挺簡(jiǎn)單的,于是就自學(xué)了Python,花了兩天時(shí)間了解了Python的基礎(chǔ)語(yǔ)法后,今天想做個(gè)練習(xí)題試試手(實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)),下面是練習(xí)題:(試題來(lái)源:《PYTHON生物信息學(xué)數(shù)據(jù)管理》)

試題02

書(shū)中答案原代碼如下:

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)

為了將所學(xué)內(nèi)容活用,充分理解思路,特拆分講解。(嫌麻煩的可以直接查看最后的升級(jí)版代碼)
第一步:導(dǎo)入math模塊

from math import *

第二步:獲取兩個(gè)點(diǎn)的坐標(biāo)
①方便隨時(shí)計(jì)算用戶輸入的兩點(diǎn)的坐標(biāo)并計(jì)算出兩個(gè)點(diǎn)之間的距離。特增加了獲取用戶輸入的input()函數(shù)。

#獲取用戶輸入
x1,y1,z1=input("請(qǐng)依次輸入點(diǎn)1縱橫坐標(biāo)的值:",)
x2,y2,z2=input("請(qǐng)依次輸入點(diǎn)2縱橫坐標(biāo)的值:",)

②為了簡(jiǎn)化同時(shí)獲取用戶輸入的點(diǎn)的坐標(biāo)的三個(gè)值,使用了切片功能。split(',')表示以“,”作為分隔符,切割用戶輸入的三個(gè)字符。

x1,y1,z1=input("請(qǐng)依次輸入點(diǎn)1縱橫坐標(biāo)的值:",).split(',')
x2,y2,z2=input("請(qǐng)依次輸入點(diǎn)2縱橫坐標(biāo)的值:",).split(',')

第三步:編寫(xiě)計(jì)算公式
①計(jì)算差值
由于系統(tǒng)默認(rèn)用戶輸入的是字符,所以使用下面的代碼計(jì)算可能會(huì)報(bào)錯(cuò)

dx = x1-x2
dy = y1-y2
dz = z1-z2

因此增加了eval()函數(shù),將字符串轉(zhuǎn)化為數(shù)值,方便下面的計(jì)算,代碼如下:

dx = eval(x1) -eval(x2)
dy = eval(y1) -eval(y2)
dz = eval(z1) -eval(z2)

②計(jì)算公式
計(jì)算公式代碼如下:

dsquare = pow(dx,2)+pow(dy,2)+pow(dz,2)
d = sqrt(dsquare)

第四步:輸出結(jié)果

print(d)

最后將代碼總結(jié)如下:

from math import *
#獲取用戶輸入
x1,y1,z1=input("請(qǐng)依次輸入點(diǎn)1縱橫坐標(biāo)的值:",).split(',')
x2,y2,z2=input("請(qǐng)依次輸入點(diǎn)2縱橫坐標(biāo)的值:",).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)

雖然這是個(gè)小小的計(jì)算程序,但對(duì)于初學(xué)者的我來(lái)說(shuō)每一次對(duì)原代碼的升級(jí)改造,哪怕是讀懂后的注釋都感覺(jué)是一次進(jìn)步提升,總之代碼雖小,動(dòng)手最重要!希望更多學(xué)習(xí)Python的愛(ài)好者不要像我一樣眼高手低,學(xué)習(xí)編程就是要,思考,敲碼,思考,敲碼,敲碼,再敲碼!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,352評(píng)論 0 10
  • 原文鏈接 《Python數(shù)據(jù)分析》(Python for Data Analysis, 2nd Edition)第...
    李紹俊閱讀 8,779評(píng)論 0 5
  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù),在Python程序...
    績(jī)重KF閱讀 2,025評(píng)論 0 1
  • 好詞:車仗、驚愕、滎陽(yáng)、鈞旨、弩、嫁禍于人、檀溪。 好句:“我這不算啥,我三弟張飛張翼 德于百萬(wàn)軍上取上將的人頭,...
    王子凡同學(xué)閱讀 625評(píng)論 0 0
  • 今天是2016年7月19號(hào),昨晚我做了一個(gè)夢(mèng),夢(mèng)到了許久沒(méi)見(jiàn)的小翠,今天突然有點(diǎn)想寫(xiě)小翠。 小翠是我小時(shí)候的玩伴,...
    橙子那么酸閱讀 430評(píng)論 0 0

友情鏈接更多精彩內(nèi)容