#!/usr/bin/env python
創(chuàng)新互聯(lián)建站主營鄂倫春網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),鄂倫春h5微信小程序搭建,鄂倫春網(wǎng)站營銷推廣歡迎鄂倫春等地區(qū)企業(yè)咨詢
# -*- coding: utf-8 -*-
a = input()
b = input()
c = input()
if (a + b c and a + c b and b + c a and abs(a - b) c and abs(a - c) b and abs(b - c) a):
print "能組成三角形"
else:
print "不能組成三角形"
程序條件時(shí)根據(jù)三角形原理兩邊之和大于第三邊,兩邊之差小于第三邊的規(guī)則判斷。
例如程序運(yùn)行時(shí)分別輸入2、3、4,程序輸出"能組成三角形"。
擴(kuò)展資料
1、python輸入用法介紹:
python輸入時(shí)使用input( )函數(shù),這個(gè)函數(shù)只能接收“數(shù)字”的輸入,返回所輸入的數(shù)字的類型( int, float )。
示例:
a = input("input a: ")
print(a,type(a))
2、python abs函數(shù)介紹
abs() 函數(shù)返回?cái)?shù)字的絕對值,語法是:abs( x ),函數(shù)返回x(數(shù)字)的絕對值。
函數(shù)詳見rres,此代碼使該算法運(yùn)行了兩次
收獲:
這是我第一個(gè)實(shí)現(xiàn)的代碼。學(xué)習(xí)完該算法以后,邏輯框架基本上就有了,剩下需要明確的就是對應(yīng)的python的語言。于是我就開始了查找“如何定義函數(shù)”(詳見mofan的優(yōu)酷),“循環(huán)體”和“if條件語句”的格式()“數(shù)學(xué)符號”(詳見mofan的優(yōu)酷),以及print的使用
1.def是python中指定義,一般用來定義函數(shù),如果需要深度學(xué)習(xí)搭建網(wǎng)絡(luò)可用來定義網(wǎng)絡(luò)。值得注意的一點(diǎn)是
我不清楚為什么,但是如果沒有加的話,那個(gè)函數(shù)公式就是一個(gè)花瓶,就像一個(gè)結(jié)果輸不出去。
2.最坑的就是邏輯。一開始邏輯沒理清楚,或者說在代碼上有疏漏,導(dǎo)致我將left和right放在了循環(huán)體里,結(jié)果可想而知。不過也是因?yàn)檫@個(gè)錯(cuò)誤,我知道pycharm中的debug怎么用,挺簡單的,百度一下就出來了。
3.不知道什么原因,看的莫煩視頻中的print多個(gè)變量一起輸出是沒有辦法在我的pycharm中使用的,出來的結(jié)果很奇怪??赡苁且?yàn)槲沂莣in10不是ios吧。print如果多個(gè)變量一起輸出必須是print("名字:%s,名字2:%s"%(a,b))結(jié)果輸出就是名字:a ,名字2:b
關(guān)于python中數(shù)據(jù)變量。第一遍運(yùn)行結(jié)果出現(xiàn)很明顯不對,于是我采用了debug。結(jié)果發(fā)現(xiàn),mid1處一直為1而不是1.5,于是就開始了解數(shù)據(jù)變量。起初我猜測python默認(rèn)所有變量為整型,但是根據(jù)二分法的結(jié)果我意識到此猜測不對,所以要改整個(gè)file的變量格式?jīng)]有必要。所以我就在mid1式子前面加了一個(gè)float,結(jié)果就顯示為1.5了。但是如果我將整個(gè)式子用()括起來,前面加float,結(jié)果還是1。我不太理解為什么。不過我知道了python的數(shù)據(jù)格式是根據(jù)輸入量決定的,也就是說你的輸入量如果是整型,那么與其直接相關(guān)的計(jì)算輸出結(jié)果一定是整型,而且還是不采用進(jìn)位的整型。在我沒有采用+float/+.0這兩種方法之前,mid1~3全部是整型。
或者不再mid1前面加float,直接將輸入量后面點(diǎn)個(gè)點(diǎn)就行
真的很想吐槽一下print,好麻煩啊啊啊啊每次都得弄個(gè)%s,而且有時(shí)候還不能放一起!?。?!
不要問我掌握了什么,要問我現(xiàn)在寫完這個(gè)代碼后有多么的愛python的精度表示 :-)我決定以后只要再編寫數(shù)學(xué)公式的代碼都將輸入量的小數(shù)學(xué)點(diǎn)后面補(bǔ)很多0
fibonacci函數(shù)定義,每次debug后我的手都是抖的O( _ )O~
不知道自己什么時(shí)候有的強(qiáng)迫癥,只要是代碼下面有“~”我就必須要消掉。笑哭。這個(gè)很簡單,前四個(gè)除了費(fèi)波納茨,都很簡單。
這個(gè)公式看起來很麻煩,便寫的時(shí)候更要謹(jǐn)慎。我上回把那個(gè)2擱在了分號下面,結(jié)果很大,所以還是換算成0.5更好(PS:勿忘那長河般的0)。
雖然代碼很長,但是主要是因?yàn)閜rint太多。本打算在開頭print,最后結(jié)果會(huì)漏掉最后一部分。懶得想其他辦法了,直接就這樣吧
一開始while里面寫成了,導(dǎo)致run不出來。繼而,debug也沒法用。在網(wǎng)上一查才知道 “沒聯(lián)網(wǎng)”+“沒選斷點(diǎn)”。最后想嘗試將else里面的內(nèi)容輸出來,結(jié)果發(fā)現(xiàn)run以后被刷屏了。于是改成i7以后還是不行,于是想著加一個(gè)break跳出循環(huán),結(jié)果成效了。
然后剛剛由debug了一下,才知道原來是i+1在if里面,因?yàn)闆]有辦法+1,所以i=6一直存在,就不斷循環(huán)。因?yàn)榧觔reak也好,i+1也好,都可以。
這是我第一組自己實(shí)現(xiàn)的python代碼,就是數(shù)學(xué)公式用python語言組裝起來。剛開始的時(shí)候知道大概需要在語言中體現(xiàn)什么,但不太清楚。于是我就在網(wǎng)上找了幾個(gè)二分法的,他們都各有不同,但框架都差不多,不過如果要用到我們的那個(gè)公式里還需要改變很多。然后我就開始分析我們的題,我發(fā)現(xiàn)大體需要兩部分,一部分函數(shù)定義,一部分循環(huán)體。但我不知道如何定義函數(shù),如何寫數(shù)學(xué)公式,如何弄變量,也就是說一些小點(diǎn)不太會(huì),所以我選擇直接百度。因?yàn)槲抑雷约洪喿x的能力不錯(cuò),相比于從視頻中提取要素,我更擅長通過閱讀獲得要點(diǎn)。有目的性地找知識點(diǎn),掌握地更牢固。
于是我就開始了第一個(gè)——二分法的編寫。我發(fā)現(xiàn),自己出現(xiàn)了很多錯(cuò)誤而且有很多地方都很基礎(chǔ)。但我依然沒選擇視頻,而是將這些問題直接在百度上找,因?yàn)橐曨l講完或許你也沒找到點(diǎn)。當(dāng)然,這是一步一步走的,不是直接就將程序擺上去,一點(diǎn)一點(diǎn)改。
隨著前兩個(gè)的成功,我發(fā)現(xiàn)自己對于這些代碼有了自信,似乎看透了他們的偽裝,抓住了本質(zhì)。除此之外,我還意識到自己自從8月份以后,學(xué)習(xí)能力似乎提高了不少,而且有了更為有效的學(xué)習(xí)方法。各方面都有了一定的覺醒。除了第一個(gè)找了幾個(gè)牛頭不對馬嘴的代碼,其他都是根據(jù)自己的邏輯寫,邏輯通下來以后,對應(yīng)語言中某一部分不知道如何翻譯就去百度,其實(shí)這幾個(gè)套路都一樣或者說數(shù)學(xué)公式轉(zhuǎn)化的套路都一樣。
我還意識到,匯編其實(shí)是最難的語言,目前為止所學(xué)到的,因?yàn)楹芏喽夹枰约喝ザx,去死摳,需要記住大量的指令且不能靈活變通。但是其他的卻只需要將一些對應(yīng)的記下來就好。python真的挺簡單的。而且,我發(fā)現(xiàn)自己今天似乎打開了新世界的大門,我愛上了這種充滿了靈性的東西,充滿了嚴(yán)謹(jǐn)?shù)拿利?,還有那未知的變化,我發(fā)現(xiàn)我似乎愛上了代碼??赡懿粌H僅局限于python,這些語言都充滿了挑戰(zhàn)性。我覺得當(dāng)你疑惑的時(shí)候,就需要相信直覺,至少我發(fā)現(xiàn)它很準(zhǔn)
np.sqrt是平方根
np.pi應(yīng)是一個(gè)常數(shù)
np.pi**0.25是np.pi的0.25次方
np.arange(0,points)是數(shù)組,意思大約是【0,1,2,3,4,。。。。。points】
np.exp是以 e 為底的指數(shù)函數(shù)
剩下的,由于本人不是主學(xué)數(shù)學(xué)的,只能幫你到這了,剩下的我就算寫可能也給你寫錯(cuò)了
在Python中,對這兩個(gè)東西有明確的規(guī)定:
函數(shù)function —— A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.
方法method —— A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).
從定義的角度上看,我們知道函數(shù)(function)就相當(dāng)于一個(gè)數(shù)學(xué)公式,它理論上不與其它東西關(guān)系,它只需要相關(guān)的參數(shù)就可以。所以普通的在module中定義的稱謂函數(shù)是很有道理的。
那么方法的意思就很明確了,它是與某個(gè)對象相互關(guān)聯(lián)的,也就是說它的實(shí)現(xiàn)與某個(gè)對象有關(guān)聯(lián)關(guān)系。這就是方法。雖然它的定義方式和函數(shù)是一樣的。也就是說,在Class定義的函數(shù)就是方法。
從上面的角度看似乎很有道理。
def fun():
pass
type(fun)
class 'function' #沒有問題
class Cla():
def fun():
pass
@classmethod
def fun1(cls):
pass
@staticmethod
def fun2():
pass
i=Cla()
Cla.fun.__class__
class 'function' #為什么還是函數(shù)
i.fun.__class__ #這個(gè)還像話
class 'method'
type(Cla.fun1)
class 'method' #這里又是方法
type(i.fun1)
class 'method'#這里仍然是方法
type(Cla.fun2)
class 'function' #這里卻是函數(shù)
type(i.fun2)
class 'function'#這里卻是函數(shù)
事實(shí)上,上面的結(jié)果是可以解釋的:
1,普通方法(老版中直接就是"instancemethod")在module中與在Class中定義的普通函數(shù),從其本身而言是沒有什么區(qū)別的,他們都是對象函數(shù)屬性。 之所以會(huì)被說在Class中的定義的函數(shù)被稱為方法,是因?yàn)樗緛砭褪敲嫦驅(qū)淼膶?shí)例對象的,其實(shí)他們就是實(shí)例方法,這些方法是與實(shí)例相聯(lián)系的(從實(shí)例出發(fā)訪問該函數(shù)會(huì)自動(dòng)賦值)。所以你從Class訪問仍然是一個(gè)函數(shù)
2,類方法("classmethod"),因?yàn)轭愅瑯邮菍ο?,所以如果函?shù)與類進(jìn)行聯(lián)系了話(與實(shí)例方法一樣的模式)那么就能夠這么說了!
3,靜態(tài)方法,雖然定義在內(nèi)部,并且也較方法,但是卻不與任何對象聯(lián)系,與從類訪問方法是一樣的,他們?nèi)匀皇呛瘮?shù)。
這樣看來上面的定義可以改改了:
函數(shù)的定義自然不變。
方法的定義可以是這樣的,與某個(gè)對象進(jìn)行綁定使用的函數(shù)。注意哦。綁定不是指" . "這個(gè)符號,這個(gè)符號說實(shí)在的只有域名的作用。綁定在這里是指,會(huì)默認(rèn)賦值該綁定的對象。
import?math
y?=?int(math.sin(x/640.0*4*math.pi)*200+240)
a=x/640.0*4*math.pi??#?x的值除以640乘以4再乘以pi
b=math.sin(a)*200+240??#弧度a的sin值,乘以200再加240
y=int(b)????#?把b的值去掉小數(shù)部分,轉(zhuǎn)換為整數(shù)