巴克斯范式
巴克斯范式指的就是一個代碼,從非終結(jié)符號轉(zhuǎn)換到終結(jié)符號,這個代碼是一個句子,它的語法結(jié)構(gòu)可以用主語+謂語+賓語表示。
主語(subject)可以選擇用名詞(noun)作為終結(jié)符號。
謂語可選擇動詞(verb)作為終結(jié)符號.
賓語可選擇名詞(noun)作為終結(jié)符號.
所有的代碼都可以簡化為這樣一種語法結(jié)構(gòu),但是它可以表達(dá)很多信息。當(dāng)然它的特點(diǎn)就是準(zhǔn)確和簡單。
Python表達(dá)式
Python語法是一個非常嚴(yán)格的,比我們用的母語嚴(yán)格得多,當(dāng)我們母語不嚴(yán)格時,我們還可以相互理解,而Python語法不嚴(yán)格時,會出現(xiàn)無效的語法結(jié)構(gòu)。
Expression→Expression+oprator+Expression
有兩個左邊表達(dá)式和右邊表達(dá)式,右邊表達(dá)式可以從左邊表達(dá)式替代
Expression 可以用number替代;number可以用0、1、2……替代
oprator可以用加減乘除替代
具體數(shù)字是終止符,加減乘除也是終止符。
當(dāng)我們不用number代替時,我們也可以用右邊表達(dá)式,這是一個無限循環(huán)的模式,這樣的是不行的。
我們增加一個新的規(guī)則:那就是(expression)來表達(dá)一個新的表達(dá)式。
下面是我做錯的題,值得注意:
Write Python code to print out how far light travels
in centimeters in one nanosecond. Use the values
defined below.
speed_of_light = 299792458 meters per second
centimeters = 100 one meter is 100 centimeters
nanosecond = 1.0/1000000000 one billionth of a second
print ((2997924581000)0.0000000001)
其實(shí)這是三個數(shù)字相乘怎樣用Python表達(dá)呢?
我第一次輸入的是((2997924581000)0.0000000001) 它是錯誤的,忘了輸入print
第二次輸入print ((2997924581000)0.0000000001)才是對的。
分析原因如下:如果你發(fā)現(xiàn)運(yùn)行結(jié)果為0,嘗試將值轉(zhuǎn)換為小數(shù)。
當(dāng)你將一個整數(shù)(沒有小數(shù)點(diǎn)的數(shù)字) 除以另一個整數(shù),Python 會做一些處理,稱為整數(shù)除法,也就是會將結(jié)果的小數(shù)部分忽略掉。例如, 5/2 會得出結(jié)果 2 而不是 2.5,還有1/10 會得出結(jié)果 0 而不是 0.1。
要強(qiáng)制使 Python 運(yùn)行出含小數(shù)的答案,需要通過在數(shù)字后加小數(shù)點(diǎn)的方式,使其中的一個數(shù)字成為小數(shù)。例如:5/2.0 就可以得出 2.5, 5.0/2也是一樣。