慕课网初识python_初识Python笔记
初識(shí)Python
基本數(shù)據(jù)類型
基本數(shù)據(jù)類型:
整數(shù) 十六進(jìn)制用0x前綴和0-9,a-f表示
浮點(diǎn)數(shù) 整數(shù)運(yùn)算永遠(yuǎn)是精確的,而浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差
字符串 以’‘或""括起來(lái)的任意文本,轉(zhuǎn)義字符 \ ,多行字符串,可以用’’’…’’'表示,字符串前面加個(gè)前綴 r 表示這是一個(gè) raw 字符串,里面的字符就不需要轉(zhuǎn)義了
布爾值 只有True、False兩種值,布爾值可以用and、or和not運(yùn)算
空值 用None表示
print 語(yǔ)句可以向屏幕上輸出指定的文字,逗號(hào)“,”會(huì)輸出一個(gè)空格
注釋以 # 開(kāi)頭,后面的文字直到行尾都算注釋
變量名必須是大小寫英文、數(shù)字和下劃線(_)的組合,且不能用數(shù)字開(kāi)頭
等差數(shù)列求和:
# -*- coding: utf-8 -*-
x1 = 1
d = 3 # 公差
n = 100
x100 = x1 + (n - 1) * d
s = (x1 + x100) * n / 2
print s
a = 'python'
print 'hello,', a or 'world' # hello, python
b = ''
print 'hello,', b or 'world' # hello, world
列表
Python內(nèi)置的一種數(shù)據(jù)類型是列表:list。list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素
L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
print L
L = [95.5,85,59]
print L[0]
print L[1]
print L[2]
print L[3] # 報(bào)錯(cuò)
print L[-1]
print L[-2]
print L[-3]
L = ['Adam', 'Lisa', 'Bart']
L.append('Paul')
print L # ['Adam', 'Lisa', 'Bart', 'Paul']
L = ['Adam', 'Lisa', 'Bart']
L.insert(0, 'Paul')
print L # ['Paul', 'Adam', 'Lisa', 'Bart']
L = ['Adam', 'Lisa', 'Bart', 'Paul']
L.pop() # 'Paul'
print L # ['Adam', 'Lisa', 'Bart']
L = ['Adam', 'Lisa', 'Paul', 'Bart']
L.pop(2) # 'Paul'
print L # ['Adam', 'Lisa', 'Bart']
切片:
L = ['Adam', 'Lisa', 'Bart', 'Paul']
L[0:3] # ['Adam', 'Lisa', 'Bart']
L[:3] # ['Adam', 'Lisa', 'Bart']
L[1:3] # ['Lisa', 'Bart']
L[:] # ['Adam', 'Lisa', 'Bart', 'Paul']
L[::2] # ['Adam', 'Bart'],第三個(gè)參數(shù)表示每N個(gè)取一個(gè)
L = range(1, 101)
print L[:10] # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print L[2::3]
print L[4:50:5] # [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
L = ['Adam', 'Lisa', 'Bart', 'Paul']
L[-2:] # ['Bart', 'Paul']
L[:-2] # ['Adam', 'Lisa']
L[-3:-1] # ['Lisa', 'Bart']
L[-4:-1:2] # ['Adam', 'Bart']
L = range(1, 101)
print L[-10:]
print L[-46::5]
def firstCharUpper(s):
return s[0:1].upper() + s[1:]
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
元組
tuple是另一種有序的列表,中文翻譯為“ 元組 ”。tuple 和 list 非常類似,但是,tuple一旦創(chuàng)建完畢,就不能修改了。
tuple沒(méi)有 append()方法,也沒(méi)有insert()和pop()方法
t = ('Adam', 'Lisa', 'Bart')
t = (0,1,2,3,4,5,6,7,8,9)
print t
t = (1)
print t # 1
t = (1,)
print t # (1,)
t = ('a', 'b', ['A', 'B'])
L = t[2]
L[0] = 'X'
L[1] = 'Y'
print t # ('a', 'b', ['X', 'Y'])
t = ('a', 'b', ('A', 'B'))
print t # ('a', 'b', ('a', 'b'))
流程控制
Python代碼的縮進(jìn)規(guī)則,縮進(jìn)請(qǐng)嚴(yán)格按照Python的習(xí)慣寫法:4個(gè)空格,不要使用Tab,更不要混合Tab和空格,否則很容易造成因?yàn)榭s進(jìn)引起的語(yǔ)法錯(cuò)誤。
if 語(yǔ)句后接表達(dá)式,然后用:表示代碼塊開(kāi)始
age = 20
if age >= 18:
print 'your age is', age # your age is 20
print 'adult' # adult
score = 55
if score >= 60:
print 'passed'
else:
print 'failed'
score = 85
if score >= 90:
print 'excellent'
elif score >= 80:
print 'good'
elif score >= 60:
print 'passed'
else:
print 'failed'
for 循環(huán)可以依次把list或tuple的每個(gè)元素迭代出來(lái)
L = [75, 92, 59, 68]
sum = 0.0
for i in L:
sum += i
print sum / 4
和 for 循環(huán)不同的另一種循環(huán)是 while 循環(huán),while 循環(huán)不會(huì)迭代 list 或 tuple 的元素,而是根據(jù)表達(dá)式判斷循環(huán)是否結(jié)束
break退出循環(huán)
continue繼續(xù)循環(huán)
sum = 0
x = 1
while x < 100:
sum += x
x += 2
print sum
sum = 0
x = 1
n = 1
while True:
sum += x
x = 2 * x
n += 1
if n > 20:
break
print sum
sum = 0
x = 0
while True:
x = x + 1
if x > 100:
break
if x % 2 == 0:
continue
sum += x
print sum
for x in [1,2,3,4,5,6,7,8,9]:
for y in [1,2,3,4,5,6,7,8,9]:
if x < y:
print x * 10 + y
dict
花括號(hào) {} 表示這是一個(gè)dict,然后按照 key: value, 寫出來(lái)即可。最后一個(gè) key: value 的逗號(hào)可以省略。
通過(guò) key 訪問(wèn) dict 的value,只要 key 存在,dict就返回對(duì)應(yīng)的value。如果key不存在,會(huì)直接報(bào)錯(cuò):KeyError。
要避免 KeyError 發(fā)生,有兩個(gè)辦法:
一是先判斷一下 key 是否存在,用 in 操作符
二是使用dict本身提供的一個(gè) get 方法,在Key不存在的時(shí)候,返回None
dict的第一個(gè)特點(diǎn)是查找速度快,無(wú)論dict有10個(gè)元素還是10萬(wàn)個(gè)元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降。
dict的第二個(gè)特點(diǎn)就是存儲(chǔ)的key-value序?qū)κ菦](méi)有順序的!這和list不一樣
dict的第三個(gè)特點(diǎn)是作為 key 的元素必須不可變,Python的基本類型如字符串、整數(shù)、浮點(diǎn)數(shù)都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59,
'Paul': 75
}
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
print 'Adam:', d['Adam']
print 'Lisa:', d['Lisa']
print 'Bart:', d['Bart']
d = {
95: 'Adam',
85: 'Lisa',
59: 'Bart'
}
d[72] = 'Paul'
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
for key in d:
print key,':',d[key]
dict的作用是建立一組 key 和一組 value 的映射關(guān)系,dict的key是不能重復(fù)的。
set 持有一系列元素,這一點(diǎn)和 list 很像,但是set的元素沒(méi)有重復(fù),而且是無(wú)序的,這點(diǎn)和 dict 的 key很像。
set的內(nèi)部結(jié)構(gòu)和dict很像,唯一區(qū)別是不存儲(chǔ)value,因此,判斷一個(gè)元素是否在set中速度很快。
set存儲(chǔ)的元素和dict的key類似,必須是不變對(duì)象,因此,任何可變對(duì)象是不能放入set中的。
s = set(['A', 'B', 'C', 'C'])
print s # set(['A', 'C', 'B'])
len(s) # 3
s = set(['adam', 'lisa', 'bart', 'paul'])
print 'adam' in s
print 'bart' in s
months = set(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])
x1 = 'Feb'
x2 = 'Sun'
if x1 in months:
print 'x1: ok'
else:
print 'x1: error'
if x2 in months:
print 'x2: ok'
else:
print 'x2: error'
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
print x[0],':',x[1]
set存儲(chǔ)的是一組不重復(fù)的無(wú)序元素,因此,更新set主要做兩件事:
一是把新的元素添加到set中,二是把已有元素從set中刪除。
s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for x in L:
if x in s:
s.remove(x)
else:
s.add(x)
print s
函數(shù)
在交互式命令行通過(guò) help(abs) 查看abs函數(shù)的幫助信息
調(diào)用函數(shù)的時(shí)候,如果傳入的參數(shù)數(shù)量不對(duì),會(huì)報(bào)TypeError的錯(cuò)誤
如果傳入的參數(shù)數(shù)量是對(duì)的,但參數(shù)類型不能被函數(shù)所接受,也會(huì)報(bào)TypeError的錯(cuò)誤
abs(-20) # 20
cmp(1, 2) # -1
cmp(2, 1) # 1
cmp(3, 3) # 0
int('123') # 123
int(12.34) # 12
str(123) # '123'
str(1.23) # '1.23'
L = []
for i in range(1, 101):
L.append(i * i)
print sum(L)
在Python中,定義一個(gè)函數(shù)要使用 def 語(yǔ)句,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用 return 語(yǔ)句返回。
如果沒(méi)有return語(yǔ)句,函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果,只是結(jié)果為 None。return None可以簡(jiǎn)寫為return。
def square_of_sum(L):
sum = 0
for i in L:
sum += i * i
return sum
print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])
math包提供了sin()和 cos()函數(shù),我們先用import引用它
Python的函數(shù)返回多值其實(shí)就是返回一個(gè)tuple
import math
def quadratic_equation(a, b, c):
t = math.sqrt(b * b - 4 * a * c)
return (-b + t) / (2 * a),( -b - t )/ (2 * a)
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
def move(n, a, b, c): # 遞歸
if n == 1:
print a, '-->', c
return
move(n-1, a, c, b)
print a, '-->', c
move(n-1, b, a, c)
move(4, 'A', 'B', 'C')
def greet(x='world'): # 默認(rèn)參數(shù)
print 'Hello,',x,'.'
greet()
greet('Bart')
def average(*args): # 可變參數(shù)
sum = 0.0
if len(args) == 0:
return sum
for x in args:
sum = sum + x
return sum / len(args)
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)
迭代
在Python中,如果給定一個(gè)list或tuple,我們可以通過(guò)for循環(huán)來(lái)遍歷這個(gè)list或tuple,這種遍歷我們成為迭代(Iteration)。
因?yàn)?Python 的 for循環(huán)不僅可以用在list或tuple上,還可以作用在其他任何可迭代對(duì)象上。
迭代操作就是對(duì)于一個(gè)集合,無(wú)論該集合是有序還是無(wú)序,我們用 for 循環(huán)總是可以依次取出集合的每一個(gè)元素。
集合是指包含一組元素的數(shù)據(jù)結(jié)構(gòu),我們已經(jīng)介紹的包括:
有序集合:list,tuple,str和unicode;
無(wú)序集合:set
無(wú)序集合并且具有 key-value 對(duì):dict
Python中,迭代永遠(yuǎn)是取出元素本身,而非元素的索引。使用 enumerate() 函數(shù)
實(shí)際上,enumerate() 函數(shù)把:[‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’]
變成了類似:[(0, ‘Adam’), (1, ‘Lisa’), (2, ‘Bart’), (3, ‘Paul’)]
dict 對(duì)象有一個(gè) values() 方法,這個(gè)方法把dict轉(zhuǎn)換成一個(gè)包含所有value的list
dict除了values()方法外,還有一個(gè) itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一樣
items() 方法把dict對(duì)象轉(zhuǎn)換成了包含tuple的list
for i in range(1,101):
if i % 7 == 0:
print i
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
print index, '-', name
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0.0
for v in d.itervalues():
sum += v
print sum / len(d)
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0.0
for k, v in d.items():
sum = sum + v
print k,':',v
print 'average', ':', sum / len(d)
列表生成式
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我們可以用range(1, 11)
要生成[1x1, 2x2, 3x3, …, 10x10],方法一是循環(huán)
但是循環(huán)太繁瑣,而列表生成式則可以用一行語(yǔ)句代替循環(huán)生成上面的list:[x * x for x in range(1, 11)]
range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,…]
列表生成式的 for 循環(huán)后面還可以加上 if 判斷:[x * x for x in range(1, 11) if x % 2 == 0]
print [n * (n+1) for n in range(1, 100, 2)] # [1x2, 3x4, 5x6, 7x8, ..., 99x100]
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
def generate_tr(name, score):
if score < 60:
return '
%s%s' % (name, score)return '
%s%s' % (name, score)tds = [generate_tr(name, score) for name, score in d.iteritems()]
print '
print '
NameScore'print '\n'.join(tds)
print '
'def toUppers(L):
return [x.upper() for x in L if isinstance(x, str)]
print toUppers(['Hello', 'world', 101])
print [100 * n1 + 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10) if n1==n3]
總結(jié)
以上是生活随笔為你收集整理的慕课网初识python_初识Python笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: redis数据类型_认识Redis与Re
- 下一篇: python自动登录校园网 密码_pyt