盤點(diǎn)一道Python基礎(chǔ)實(shí)現(xiàn)代數(shù)運(yùn)算的基礎(chǔ)題目
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
大家好,我是Python進(jìn)階者。
一、前言
前幾天在Python星耀交流群有個(gè)叫【BuLLBuL】的粉絲問(wèn)了一個(gè)關(guān)于Python實(shí)現(xiàn)代數(shù)函數(shù)的問(wèn)題,這里拿出來(lái)給大家分享下,一起學(xué)習(xí)。

題目看上去倒也不太難的樣子,但是對(duì)初學(xué)者來(lái)說(shuō),還是有點(diǎn)壓力的。

二、解決過(guò)程
這里給出【魏哥】和【??(這是月亮的背面)】大佬的解答,一共兩個(gè)方法,一起來(lái)看看吧!
【魏哥】解答
其實(shí)這個(gè)題目的邏輯和思路也相對(duì)簡(jiǎn)單,下面是拆解。

Python中的冪運(yùn)算格式是:x ** 2,其中x代表的是變量,2代表的是冪,有了這個(gè),就可以正常寫代碼,定義變量和函數(shù)了。下面是【魏哥】給的代碼,如下所示:
def?calc(x,?y):
????fenzi1?=?x?**?2?+?y?**?2
????fenmu1?=?x?**?2?-?y?**?2
????fenzi2?=?x?**?3?-?y?**?3
????fenmu2?=?x?**?3?+?y?**?3
????result?=?fenzi1?/?fenmu1?+?fenzi2?/?fenmu2
????return?result
if?__name__?==?'__main__':
????print(calc(7,?12))
輸出結(jié)果是-2.700338000965717。這個(gè)方法還是蠻好理解的,完全是教科書級(jí)別的,比較好理解。
【月神】解答
這里運(yùn)用了第三方庫(kù)sympy,代碼如下:
from?sympy?import?symbols
x,?y?=?symbols('x,y')??#?定義x,?y變量
#?定義代數(shù)式
f?=?((x?**?2?+?y?**?2)?/?(x?**?2?-?y?**?2))?+?((x?**?3?-?y?**?3)?/?(x?**?3?+?y?**?3))
#?將x與y替換成對(duì)應(yīng)實(shí)數(shù),計(jì)算代數(shù)式
f.subs({x:?7,?y:?12})
寫出來(lái)也十分的好看,如下圖所示:
而且代數(shù)式都清晰可見,很形象:
其中f.subs()這個(gè)有點(diǎn)難理解,不過(guò)不慌,有解析:

關(guān)于參數(shù),字典和元組都支持的。

三、總結(jié)
大家好,我是Python進(jìn)階者。這篇文章基于粉絲提問(wèn),針對(duì)Python實(shí)現(xiàn)代數(shù)函數(shù)的問(wèn)題,給出了具體說(shuō)明和演示,順利地幫助粉絲解決了問(wèn)題。
總的來(lái)說(shuō),群里給出了兩個(gè)方法,一個(gè)傳統(tǒng)方法,一個(gè)結(jié)合第三方庫(kù)實(shí)現(xiàn),各有千秋。我相信肯定還有其他方法的,如果你還有其他方法,歡迎私信交流。
最后感謝粉絲【BuLLBuL】提問(wèn),感謝【月神】和【魏哥】大佬給出的示例和代碼支持,感謝粉絲【黑臉怪】、【dcpeng】、【東哥】、【艾?!びX(jué)羅】、【冫馬讠成】等人參與學(xué)習(xí)交流。

小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說(shuō)一兩句吧~
