web前端學習python之第一章_基礎語法(一)
前言:最近新做了一個管理系統,前端已經基本完成,
但是后端人手不足沒人給我寫接口,自力更生豐衣足食,
所以決定自學python自己給自己寫接口哈哈哈哈~
先從hello world開始
輸出語法:print()
新建一個文件
hello.py
//填寫內容 print("hello , world")
運行該文件
這一點與Node很相似,Node運行文件的時候是node xx.js
python運行是python xx.py
如果沒有這個文件你就運行的話會報錯
//報錯意思是該文件不存在 python: can't open file 'hello.py': [Errno 2] No such file or directory
輸入和輸出
剛剛已經提到了輸出print()
print()在括號中加上字符串,就可以向屏幕上輸出指定的文字
//比如hello,world print("hello,world")
print()也可以接受多個字符串,需要用逗號“,”進行隔開,然后一串輸出
print("薛小白","是","最可愛的","小前端")
//會依次打印每個字符串,遇到逗號“,”會輸出一個空格,因此,輸出的結果是:
//薛小白 是 最可愛的 小前端
print()也可以打印整數或者計算結果
//打印整數 print(300) //300 //計算結果 print(100 + 200) //300 //小小一組合 print('100 + 200 =', 100 + 200) //100 + 200 = 300 //前半部分當成字符串解析,后半部分計算結果
那如果我們想讓用戶輸入一些東西怎么辦
c語言的輸入是 scanf(),可以規定輸入的是整數%d還是字符串等
像前端可能用的比較多的就是input框獲取用戶輸入的內容
python的輸入是input()
name = input() print('hello,', name) //此時的name是一個變量, //第一句話是讓你輸出一個內容(此處最好的一個名字,比如:薛小白) //第二句話是進行一個輸出,同時輸出你剛剛填寫的內容 //輸入完你想輸入的內容后,記得按回車鍵
這樣就可以輸入輸出了,但是用戶體驗是有點差的,用戶怎么知道什么時候輸東西已經輸入什么東西呢,我們需要給他們一點提示!
name = input('please enter your name: ') print('hello,', name)
這樣再運行這個程序的時候,你會發現先打印出 please enter your name:
數據類型和變量
整數、浮點數、字符串
字符串用單引號‘’或者雙引號“”包起來,
如果字符串內部包含‘’或者“”需要使用轉義字符\
//一句話的正常寫法如下 I'm ok! //因為出現了’所以需要轉義字符 'I\'m ok!'
轉義字符可以轉譯很多字符,\n表示換行,\\表示字符\,\t
表示制表符(就是tab)
python允許使用r‘’表示‘’內部的字符串默認不轉義
print('\\\t\\') //輸出結果:\ \ print(r'\\\t\\') //輸出結果:\\\t\\
python允許'''內容'''來表示多行內容
print('''line1 line2 line3''') line1 line2 line3
python里有一個特殊的值,空值None,不可理解為0
除法
//一種除法/結果是浮點數,無論是否整除結果都是浮點數 10 / 3 3.3333333333333335 9 / 3 3.0 //還有一種除法是//,稱為地板除,兩個整數的除法仍然是整數 10 // 3 3 //取余% 10 % 3 1
字符串和編碼
對於單個字符的編碼,python提供了ord()獲取字符的整數表示,chr()把編碼轉換為對應的字符
ord('A') 65 ord('中') 20013 chr(66) 'B' chr(25991) '文' //如果知道字符的整數編碼,還可以用十六禁止這么寫str '\u4e2d\u6587' '中文'
在python中采用的格式化的方式和c語言是一樣的,用%實現格式化
Hello, %s' % 'world' 'Hello, world' 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
%d整數、%f浮點數、%s字符串、%x十六進制整數
'Age: %s. Gender: %s' % (25, True) 'Age: 25. Gender: True' //有些時候,字符串里面的%是一個普通字符怎么辦?這個時候就需要轉義,用%%來表示一個%: 'growth rate: %d %%' % 7 'growth rate: 7 %'
另一種格式化字符串的方法是使用字符串的format()
方法,它會用傳入的參數依次替換字符串內的占位符{0}
、{1}
……,不過這種方式寫起來比%要麻煩得多:
'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成績提升了 17.1%'
使用list和tuple
python內置的一種數據類型是列表list,list是一種有序的集合,可以隨時添加和刪除其中的元素。其實就是js的數組
classmates = ['Michael', 'Bob', 'Tracy'] classmates ['Michael', 'Bob', 'Tracy'] classmates[0] 'Michael' classmates[1] 'Bob' classmates[2] 'Tracy'
前端獲取一個數組的長度是arr.length, python使用len()函數獲取數組個數,最后一個元素的索引是 len(classmates) - 1
如果要獲取最后一個元素,除了使用索引外,還可以使用-1作為索引,直接獲取到最后一個元素
classmates[-1] 'Tracy'
以此類推,可以獲取倒數第二個、倒數第三個
classmates[-2] 'Bob' classmates[-3] 'Michael'
給數組添加元素append()
classmates.append('Adam') classmates ['Michael', 'Bob', 'Tracy', 'Adam']
把元素插入到指定位置insert()索引值為i
classmates.insert(i, 'Jack') classmates ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
刪除指定位置的元素pop(),索引值為i
classmates.pop(1) 'Jack' classmates ['Michael', 'Bob', 'Tracy']
把某個元素替換直接賦值即可
classmates[1] = 'Sarah' classmates ['Michael', 'Sarah', 'Tracy']
數組里的數據類型可以不一樣,比如[ 'apple' , 1 , true ]
數組里可以包着數組
s = ['python', 'java', ['asp', 'php'], 'scheme'] len(s) 4
tuple稱為有序元素,與list類似,但是一旦初始化無法修改,沒有append()、insert()這樣的方法,可以使用索引獲取元素但不可以賦值成另外的元素
那么他不可改變存在的意義是什么呢?
因為他不可變,所以代碼更安全,能用tuple代替list就盡量使用tuple
當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來
t = (1, 2)
t
(1, 2)
如果要定義一個空的tuple,可以寫成()
t = ()
t
()
如果要定義一個只有一個元素的tuple,如果你寫成 t = (1) 代表
定義的不是tuple,是1
這個數!這是因為括號()
既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1
。
所以,只有1個元素的tuple定義時必須加一個逗號,
,來消除歧義:
t = (1,) t (1,)
//python在顯示只有1個元素的tuple時,也會加一個逗號,
,以免你誤解成數學計算意義上的括號。
最后看一個“可變”的tuple
t = ('a', 'b', ['A', 'B']) t[2][0] = 'X' t[2][1] = 'Y' t ('a', 'b', ['X', 'Y'])
//對於tuple而言是沒有改變的,改變的是list
條件判斷
//記住寫法就可以了,不像前端有(){} //記住加:
age = 3 if age >= 18: print('adult') elif age >= 6: print('teenager') else: print('kid')
結合input
birth = input('birth: ') if birth < 2000: print('00前') else: print('00后') //此時會報錯,因為input()返回的數據類型是str,str不能直接和整數比較,必須先把str轉換成整數 s = input('birth: ') birth = int(s)//轉換成整數 if birth < 2000: print('00前') else: print('00后')
循環
兩種循環,一種是for in,依次把list或tuple中的每個元素迭代出來
names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name)
//執行這段代碼,會依次打印names的每一個元素Michael
Bob
Tracy
計算整數之和
sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum)
如果要計算1-100怎么辦呢,python提供一個range()函數,可以生成一個整數序列,再通過list()轉換為list
//range(5)生成的序列是從0開始小於5的整數 list(range(5)) [0, 1, 2, 3, 4]
第二種循環是while循環,條件滿足不斷循環條件不滿足退出循環
//計算100以內的奇數的和 sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum)
break和continue跟js一樣,此處不講
使用dict和set
dict其實就是對象
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} d['Michael']
如果key不存在,會報錯,避免key不存在的錯誤,通過in判斷key是否存在
'Thomas' in d False
也可以通過get()判斷key是否存在
d.get('Thomas') d.get('Thomas', -1) -1
//可以返回none或者自己指定的value,返回none時python的交互環境不顯示結果
dict占用大量內存,內存浪費多,查找和插入速度快,list占用內存小,查找和插入速度隨着元素增加而增加,所以dict是用空間換取時間的一種方法。
dict的key必須是不可變對象
set與dict類似,是key的集合,但不存儲value,由於key不能重復,所以set中沒有重復的key,類似於js的Set()函數
s = set([1, 1, 2, 2, 3, 3])
s
{1, 2, 3}
set添加元素add(),可以重復添加,但不會有效果:
>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}
set刪除元素remove()
>>> s.remove(4) >>> s {1, 2, 3}
set可以看作數學意義上的無序和無重復元素的集合,兩個set可以做數學意義上的交集、並集等操作:
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}
不可變對象
str是不可變對象,list是可變對象
//可變對象 >>> a = ['c', 'b', 'a'] >>> a.sort() >>> a ['a', 'b', 'c'] //不可變對象 >>> a = 'abc' >>> a.replace('a', 'A') 'Abc' >>> a 'abc'
>>> a = 'abc' >>> b = a.replace('a', 'A') >>> b 'Abc' >>> a 'abc'
未完。