變量
message = "Hello Python world!"
print(message)
message = "Hello Python Crash Course world!"
print(message)
這樣得到的輸出是兩行不同的輸出,每個print都是一個獨立的輸出。
變量在命名的時候不能將數(shù)字作為開頭,需要使用下劃線(_)來將單詞隔開测僵。
字符串
name = "ada lovalace"
print(name)
print(name.title())
#將每個單詞的首字母大寫Ada Lovalace
print(name.upper())
#將所有的字母都大寫
print(name.lower())
#將所有的字母都小寫
在合并字符串的時候只要使用“+”就行
first_name = "wang"
last_name = "mengchen"
full_name = =first_name + " " + last_name
#這里在兩個加號之間添加了一個空格
print(full_name)
wang mengchen
print("Hello, " + full_name.title() + "!")
Hello精耐, Wang Mengchen!
#如果加個變量作為中轉(zhuǎn)的話
message =?"Hello, " + full_name.title() + "!"
print(message)
#會得到一樣的結(jié)果
\t#制表符會在輸出的前面添加一段空白
print("\thandsome")
print("handsome")
? ? ? ? ? ? ? ? handsome
handsome
\n#換行符會讓輸出換行
print("Language:\nPython\nC\nJava")
Language:
Python
C
Java
#在同一個字符串中可以同時使用制表符和換行符
.rstrip()和.lstrip()
#分別刪除字符結(jié)尾的空白和字符前面的空白
浮點數(shù):帶小數(shù)點的數(shù)都是浮點數(shù)
使用str()函數(shù)避免類型錯誤
age = 23
message = "Happy " + age + "rd Birthday!"
#不能這樣輸出羊壹,因為happy和rd birthday是字符串蝙茶,但是age不是字符串扣唱,所以我們需要將age轉(zhuǎn)換為字符串款违。
message =?"Happy " + str(age) + "rd Birthday!"
#這樣就行了
列表
#列表是由一系列按特定順序排列的元素組成唐瀑。用方括號([ ])來表示列表,用逗號來分隔其中的元素插爹。
bicycles = ['trek' , 'cannondale' , 'redline' , 'specialized']
print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
#如果想要得到列表中的第一個自行車的話
print(bicycles[0])
trek
#索引是從0開始計數(shù)的? 在列表中我們也同樣可以使用title和upper等操作控制大小寫哄辣。
#在我們想使用列表中的值得時候可以直接使用
bicycles?=?['trek'?,?'cannondale'?,?'redline'?,?'specialized']
print("My?first?bicycle?is?"?+?bicycles[0]?+?"!")
My first bicycle is trek!
#想要修改列表元素時,直接命名就行
bicycles?=?['trek'?,?'cannondale'?,?'redline'?,?'specialized']
print(bicycles)
bicycles[0]?=?'giant'
print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
['giant', 'cannondale', 'redline', 'specialized']
#這個時候列表中的第一個元素已經(jīng)被修改了
#在列表末尾添加元素使用bicycles.append(giant)
#想要插入元素的話使用insert
bicycles?=?['trek'?,?'cannondale'?,?'redline'?,?'specialized']
print(bicycles)
bicycles.insert(1,?'giant')
print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'giant', 'cannondale', 'redline', 'specialized']
#這樣giant就被插入到了列表中的“1”的位置
#從列表中刪除元素的話需要使用del語句
bicycles?=?['trek'?,?'cannondale']
print(bicycles)
del?bicycles[1]
print(bicycles)
['trek', 'cannondale']
['trek']
#列表中“1”位置的元素就被刪除了
#pop指令可以刪除末尾的元素赠尾,刪除的時候可以通過變量賦值使被移除的元素被儲存起來力穗。
bicycles?=?['trek'?,?'cannondale']
print(bicycles)
pop_bicycles?=?bicycles.pop()
print(bicycles)
print(pop_bicycles)
['trek', 'cannondale']
['trek']
cannondale
#可以看到cannondale隨便被移除了,但是通過中間賦值指令pop_bicycles?=?bicycles.pop()气嫁,被移除的時候得以保存当窗。
#如果在pop()的括號中輸入數(shù)字,就可以彈出列表中任意位置的元素了寸宵。
#根據(jù)特定的值刪除元素使用.remove()指令崖面。
bicycles?=?['trek'?,?'cannondale'?,?'giant']
print(bicycles)
bicycles.remove('giant')
print(bicycles)
['trek', 'cannondale', 'giant']
['trek', 'cannondale']
組織列表
#方法.sort()對列表會根據(jù)首字母進(jìn)行永久排序,并且沒有辦法恢復(fù)到原來的順序梯影。
#方法.sort(reverse=True)會根據(jù)首字母的相反順序進(jìn)行排序巫员。
bicycles?=?['trek'?,?'cannondale'?,?'giant']
print(bicycles)
bicycles.sort()
print(bicycles)
bicycles.sort(reverse=True)
print(bicycles)
['trek', 'cannondale', 'giant']
['cannondale', 'giant', 'trek']
['trek', 'giant', 'cannondale']
#.sorted()可以進(jìn)行臨時排序。在輸出print的時候進(jìn)行print(sorted(bicycles))會臨時根據(jù)首字母進(jìn)行排序甲棍,但是過后就會恢復(fù)简识。
#bicycles.reverse()會對原有順序進(jìn)行倒序。
#len(bicycles)可以獲得列表長度感猛。
操作列表
#想要對列表中所有的元素都進(jìn)行同一個操作的時候七扰,可以用for循環(huán)。print前面的縮進(jìn)表示循環(huán)后進(jìn)行的唱遭。? 千萬不能忘記了縮進(jìn)戳寸。
actors?=?['wang',?'zhang',?'li']
for?actor?in?actors:
????print(actor.title()?+?"is?a?famous?actor")
Wangis a famous actor
Zhangis a famous actor
Liis a famous actor
#可以在for循環(huán)中加入一些title或其他的指令呈驶。
創(chuàng)建數(shù)值列表
for?value?in?range(1,4):
????print(value)
1
2
3
#range函數(shù)中是左閉右開的拷泽,直到右邊的數(shù)就停止。
#使用range創(chuàng)建數(shù)字列表的話用list。
numbers?=?list(range(1,4))
print(numbers)
[1, 2, 3]
#可以通過設(shè)置第三個數(shù)來設(shè)置公差
numbers?=?list(range(1,6,2))
print(numbers)
[1, 3, 5]
#這樣就是輸出1到5司致,公差為2.
squares?=?[]
for?value?in?range(1,6):
????square?=?value**2
????squares.append(square)
print(squares)
[1, 4, 9, 16, 25]
#min()列表可以找到最小值拆吆。max可以找到最大值。sum可以找到列表的總和脂矫。
#切片:只打印列表中的某幾個元素枣耀。
players?=?['kobe',?'james',?'davis',?'paul']
print(players[1:3])
['james', 'davis']
#如果沒有開頭的話,默認(rèn)從開頭開始庭再。如果沒有結(jié)尾捞奕,默認(rèn)直到結(jié)束。
#在復(fù)制列表的時候拄轻,需要使用
my_foods = ['noodles', 'ice cream', 'humbeger']
friend_foods = my_foods[:]
#這樣得到的my_foods和friend_foods是兩個不同的列表颅围,可以分別使用。
#Python將不能修改的值稱為不可變的恨搓,不可變的列表被稱為元組院促。
#列表使用中括號[],元組使用小括號()斧抱。
#雖然不能修改元組中的值常拓,但是我們可以給元組的變量賦值,也就是重新定義元組辉浦。
players?=?('kobe',?'james',?'davis',?'paul')
print("my?favorite?player?is?")
for?player?in?players:
????print(player)
players?=?('durant','jordan')
print("my?favorite?player?is?")
for?player?in?players:
????print(player)
kobe
james
davis
paul
my favorite player is
durant
jordan
#這樣重新賦值就相當(dāng)于重新定義了該元組弄抬。
IF語句
players?=?['kobe',?'james',?'davis',?'paul']
for?player?in?players:
????if?player?==?'james':
????????print(player.upper())
????else:
????????print(player.title())
Kobe
JAMES
Davis
Paul
#在判斷的時候==表示等于,編程中的盏浙!表示不眉睹,也就是說!=表示不等于废膘。
#檢查條件時竹海,注意區(qū)分大小寫。
#檢查條件時丐黄,and相當(dāng)于“與”門斋配,必須所有條件都是ture才輸出ture,否則為false灌闺。
#or相當(dāng)于“或”門艰争,只要有一個條件的結(jié)果是ture,那么輸出的結(jié)果就是ture桂对。
#if-elif-else結(jié)構(gòu)
#根據(jù)年齡段收費的游樂場
#四歲以下免費
#4~18歲收費¥20
#18歲(含)以上收費¥40
age?=?14
if?age?<?4:
????print('Your?admission?cost?is?0')
elif?age?<?18:
????print('Your?admission?cost?is?¥20')
else:
????print('Your?admission?cost?is?¥40')
Your admission cost is ¥20
#如果沒有通過if中的條件甩卓,就會執(zhí)行elif中的條件,如果還是沒有通過蕉斜,就會執(zhí)行else中的語句逾柿。
#可以同時使用多個elif代碼塊缀棍。
nanrenmen?=?['wangmengchen',?'wangjiayi',?'wangzhicheng'?,'zhaozikang']
for?nanren?in?nanrenmen:
????if?nanren?==?'wangjiayi':
????????print(nanren?+?"?is?a?bad?person
????????!")
????else:
????????print(nanren?+?"?is?a?handsome?man!")
wangmengchen is a handsome man!
wangjiayi is a bad person!
wangzhicheng is a handsome man!
zhaozikang is a handsome man!
#在if語句中插入for循環(huán)。
#字典是一系列鍵-值對机错。每個鍵都與一個值相關(guān)聯(lián)爬范。字典可以包含任意個鍵-值對,也可以隨時在其中添加鍵-值對弱匪。
aline_0?=?{'x_position':0,'y_position':25,'speed':'medium'}
print('Original?position?is?'?+?str(aline_0['x_position'])?+?'.')
if?aline_0['speed']?==?'low':
????x_add?=?1
elif?aline_0['speed']?==?'medium':
????x_add?=?2
else:
????x_add?=?3
aline_0['x_position']?=?aline_0['x_position']?+?x_add
print("Now,the?position?is?"?+?str(aline_0['x_position'])?+?'.')
Original position is 0.
Now,the position is 2.
#由類似對象組成的字典青瀑,可以事先設(shè)定好了再進(jìn)行使用。
women?=?{'jiayi':'chaiyutong','chengzi':'gougou','qiaoqiao':'zhuzhu','nanshen':'zhangtianai'}
print("wangjiayi's?lover?is?"?+?women['jiayi']?+?'!')
print("chengzi's?lover?is?"?+?women['chengzi']?+?"!")
print("qiaoqiao's?lover?is?"?+?women['qiaoqiao']?+?"!")
print("nanshen's?lover?is?"?+?women['nanshen']?+?"!")
wangjiayi's lover is chaiyutong!
chengzi's lover is gougou!
qiaoqiao's lover is zhuzhu!
nanshen's lover is zhangtianai!
#在for循環(huán)中使用字典的時候應(yīng)該做到對應(yīng)萧诫,使用A,B的方法斥难,對應(yīng)“字典.items()”,進(jìn)行循環(huán)帘饶。
men?=?{
????'zhaozikang'?:?'zhanan',
????'wangzhicheng':?'yibannanren',
????'wangjiayi'?:?'haonanren',
????'wangmengchen'?:?'nanshen'
}
for?name,adj?in?men.items():
????print("I'm?"?+?name?+?','?"I'm?a?"?+?adj?+?"!")
I'm zhaozikang,I'm a zhanan!
I'm wangzhicheng,I'm a yibannanren!
I'm wangjiayi,I'm a haonanren!
I'm wangmengchen,I'm a nanshen!
#遍歷字典中的所有鍵蘸炸,“字典.keys()”?
#遍歷字典中的所有值,“字典.value()”
#set(字典)是可以提取字典中所有不重復(fù)的元素尖奔。
嵌套
#可以做個嵌套搭儒,將三個字典嵌套進(jìn)一個列表中,這個列表里的三個值分別是三個字典提茁。
#也可以在字典中使用列表
players?=?{
????'men':['kobe','james'],
????'woman':'dengyaping',
}
print('my?favorite?ping-pong?player?is?'?+?players['woman'])
print('i?like?two?basketball?players,?the?list?is?')
for?man?in?players['men']:
????print('\t'?+?man)
my favorite ping-pong player is dengyaping
i like two basketball players, the list is
? ? ? ? kobe
? ? ? ? james
#用戶輸入淹禾,input()將用戶輸入解讀為字符串,int()將用戶輸入解讀為數(shù)值茴扁。
age?=?input('How?old?are?you?')
age?=?int(age)
if?age?<18:
????print('Sorry,?you?are?not?allowed?to?enter?the?room!')
else:
????print('Okay,you?can?go!')
How old are you?25
Okay,you can go!
#在while循環(huán)中加入輸入指令
message?=?"Please?tell?me?a?number?and?I?will?repeate?it?back?to?you."
message?+=?'If?you?want?to?quit,please?tell?me?quit.'
number?=?''
while?number?!=?'quit':
????number?=?input(message)
????if?number?!=?'quit':
????????print(number)
Please tell me a number and I will repeate it back to you.If you want to quit,please tell me quit.22
22
Please tell me a number and I will repeate it back to you.If you want to quit,please tell me quit.quit
#因為加了if語句铃岔,這樣在輸入“quit”的時候就不會打印“quit”了。
#在要求很多條件都滿足才能繼續(xù)運行的程序中峭火,可定義一個變量毁习,用于判斷整個程序是否處于活動狀態(tài)。這個變量被稱為標(biāo)志卖丸,充當(dāng)了程序的交通信號燈纺且。例如active = True 這樣while會一直循環(huán)直到一個條件使active = False。
#使用break語句會立刻退出while循環(huán)稍浆。
#continue語句會忽略剩下的代碼载碌,直接回到while的開頭。
number?=?0
while?number?<=10:
????number?+=?1
????if?number?%?2?==?1:
????????continue
????print(number)
2
4
6
8
10
#在while循環(huán)中結(jié)合字典使用衅枫。
response?=?{}
active?=?True
while?active:
????name?=?input("\nWhat's?your?name?")
????mountain?=?input("Which?mountain?would?you?want?to?climb?")
????response[name]?=?mountain
????person?=?input("Is?here?somebody?else?want?to?answer?the?question?")
????if?person?==?'no':
????????break
print("----------")
for?name,mountain?in?response.items():
????print(name?+?'wants?to?climb?'?+?mountain?+?'.')
What's your name?wangmengchen
Which mountain would you want to climb?xishan
Is here somebody else want to answer the question?yes
What's your name?wanglihong
Which mountain would you want to climb?zhumulangmafeng
Is here somebody else want to answer the question?no
----------
wangmengchenwants to climb xishan.
wanglihongwants to climb zhumulangmafeng.
#函數(shù):帶名字的代碼塊嫁艇,用于完成具體的工作。
#函數(shù)定義弦撩,位置實參(順序很重要)
def?greet_user(username?,?the_talk):
????"""給用戶一個簡單的問好"""
????print('\n'?+?the_talk?+?'.')
????print(username.title()?+?'!')
greet_user('wangmengchen'?,?'Hello')
greet_user('wanglihong'?,?'You?are?handsome')
Hello.
Wangmengchen!
You are handsome.
Wanglihong!
#在這段代碼中步咪,nusername是一個形參,wangmengchen是一個實參益楼,實參是屌用函數(shù)時傳遞給函數(shù)的信息猾漫。
#向函數(shù)傳遞實參的方式有很多種纯丸,可以使用位置參數(shù),但這要求實參的順序與形參的順序相同静袖;也可以使用關(guān)鍵字實參,其中每個實參都由變量名和值組成俊扭;還可以使用列表和字典队橙。
#關(guān)鍵字實參
def?greet_user(username?,?the_talk):
????"""給用戶一個簡單的問好"""
????print('\n'?+?the_talk?+?'.')
????print(username.title()?+?'!')
greet_user(username='wangmengchen'?,?the_talk='Hello')
Hello.
Wangmengchen!
#函數(shù)并非總是直接顯示輸出,相反萨惑,它可以處理一些數(shù)據(jù)捐康,并返回一個火一組值。函數(shù)返回的值被稱為返回值庸蔼。
def?full_name(first_name,last_name,middle_name=''):
????"""打印人的全名"""
????if?middle_name:
????????name?=?first_name?+?'?'?+?middle_name?+?'?'?+last_name
????else:
????????name?=?first_name?+?'?'?+?last_name
????return?name #這里return的作用是什么
musician?=?full_name('LeBron','James')
print(musician)
musician?=?full_name('1','2','3')
print(musician)
LeBron James
1 3 2
#將字典與函數(shù)想結(jié)合
def?full_message(first_name,last_name,age=''):
????""""顯示一個人的資料"""
????person={'first':first_name,'last':last_name}
????if?age:
????????person['age']?=?age
????return?person
one?=?full_message("lihong",??'wang',?age=27)
print(one)?
{'first': 'lihong', 'last': 'wang', 'age': 27}
#將while循環(huán)和函數(shù)結(jié)合起來
def?full_message(first_name,last_name,age=''):
????""""顯示一個人的資料"""
????full_name?=?first_name?+?'?'?+?last_name
????return?full_name
while?True:
????print('\nPlease?tell?me?your?name:')
????print('(You?can?enter?"q"?to?quit?anytime.)')
????f_name?=?input("First?name:")
????if?f_name?==?'q':
????????break
????l_name?=?input("Last?name:")
????if?l_name?==?'q':
????????break
????name?=?full_message(f_name,l_name)
????print("\nHello,?"?+?name.title()?+?'!')
????print('You?are?handsome!')
Please tell me your name:
(You can enter "q" to quit anytime.)
First name:mengchen
Last name:wang
Hello, Mengchen Wang!
You are handsome!
Please tell me your name:
(You can enter "q" to quit anytime.)
First name:
#傳遞任意數(shù)量的實參解总,如果事先不知道有多少個實參,那就使用“*toppings”星號來解決
#星號讓python創(chuàng)建了一個名為toppings的空元組姐仅,并將收到的所有值都封裝到這個元組里
#結(jié)合使用位置實參和任意數(shù)量實參
def?make_pizza(size,*toppings):
????"""概述要制作的披薩"""
????print("\nMaking?a?"?+?str(size)?+?"-inch?pizza?with?the?following?toppings:")
????for?topping?in?toppings:
????????print("-?"?+?topping)
make_pizza(7,'pork','apple')
make_pizza(9,"beef","orange")
Making a 7-inch pizza with the following toppings:
- pork
- apple
Making a 9-inch pizza with the following toppings:
- beef
- orange
#根據(jù)類來創(chuàng)建對象被稱為實例化花枫,這讓那個我們能夠使用類的實力。
#下面將編寫一個表示小狗的簡單類Dog——它表示的不是特定的小狗掏膏,而是任何小狗劳翰。
#類中的函數(shù)被稱為方法。在python中馒疹,首字母大寫的就是類佳簸。
class?Dog():
????"""一次模擬小狗的簡單嘗試"""
????def?__init__(self,name,age):
????????"""初始化屬性name和age"""
????????self.name?=?name
????????self.age?=?age
????def?sit(self):
????????"""模擬小狗被命令時蹲下"""
????????print(self.name.title()?+?"?now?is?sitting.")
????def?roll_over(self):
????????"""模擬小狗被命令時打滾"""
????????print(self.name.title()?+?'?rolled?over!')
my_dog?=?Dog('willian',5)
print("My?dog's?name?is?"?+?my_dog.name.title()?+?'.')
print('My?dog?is?'?+?str(my_dog.age)?+?"?years?old.")
my_dog.sit()
#在創(chuàng)建Dog.()實例的時候,通過實參向Dog傳遞姓名和年齡颖变,self會自動傳遞生均。在這個方法定義匯總,self必不可少腥刹。以self為前綴的變量都可供類中的所有方法使用马胧。
class?Dog():
????"""一次模擬小狗的簡單嘗試"""
????def?__init__(self,name,age):
????????"""初始化屬性name和age"""
????????self.name?=?name
????????self.age?=?age
????def?sit(self):
????????"""模擬小狗被命令時蹲下"""
????????print(self.name.title()?+?"?now?is?sitting.")
????def?roll_over(self):
????????"""模擬小狗被命令時打滾"""
????????print(self.name.title()?+?'?rolled?over!')
#想要修改屬性的值:直接通過實例進(jìn)行修改;通過方法進(jìn)行設(shè)置衔峰;通過方法進(jìn)行遞增(增加特定的值)漓雅。
#如果將要編寫的類是另一個現(xiàn)成類的特殊版本,可使用繼承朽色。一個類繼承另一個類時邻吞,它將自動獲得另一個類的所有屬性和方法;原有的類稱為父類葫男,而新類稱為子類抱冷。
#創(chuàng)建子類的時候父類必須在當(dāng)前文件中,且位于子類前面梢褐。定義子類時旺遮,必須在括號內(nèi)指定父類的名稱赵讯,使用方法__init__()接受創(chuàng)建Car實例所需的信息。super()是一個特殊函數(shù)耿眉,幫助python將父類和子類連接起來边翼,這行代碼讓python屌用ElectricCar的父類的方法__init__(),讓ElectricCar實例包含父類的所有屬性鸣剪。? 注:父類也稱為超類组底。
#從一個模塊中導(dǎo)入多個類
from car import Car, ElectricCar
#用逗號將多個類隔開
#如果想要導(dǎo)入整個模塊的話就直接用import
import car
#引入文件,使用方法read()讀取這個文件的全部內(nèi)容筐骇,并將其作為一個長長的字符串存儲在contents中债鸡。
with?open('123.txt')?as?file_object:
????contents?=?file_object.read()
????print(contents)
#在打開一個文件的時候,必須要保證這個人間和程序的目錄是同一級目錄铛纬。
#但是這樣輸出的時候末尾會有一個空白厌均,是因為read()到達(dá)文件末尾時返回一個空字符串,而將這個空字符串顯示出來時就是一個空行告唆。要刪除末尾的空行棺弊,需要在print語句中使用rstrip()
#如果目標(biāo)文件和程序不在同一級目錄中,我們需要使用絕對路徑擒悬。
with open('E:\QQMusic\resae\soundbox3_match')
#創(chuàng)建一個包含文件各行內(nèi)容的列表
#readlines()方法從文件中讀取每一行
#在文件中寫入內(nèi)容:寫入模式'w'镊屎、讀取模式‘r’、附加模式‘a(chǎn)’茄螃、能夠讀取和寫入文件的模式‘r+’缝驳。如果忽略模式實參,python默認(rèn)為只讀模式打開文件
#其中寫入模式會覆蓋归苍,如果想要添加內(nèi)容用狱,需要使用附加模式。
#如果程序運行的時候可能面臨錯誤的風(fēng)險拼弃,就使用try夏伊、except和else進(jìn)行處理。
#.split()可以將以空格為分隔符的字符串分拆成多個部分吻氧,并將這些部分存儲到一個列表中溺忧。
#進(jìn)行存儲數(shù)據(jù)的時候需要使用模塊json來存儲數(shù)據(jù)。
#首先導(dǎo)入模塊json盯孙,然后創(chuàng)建一個列表鲁森,將該文件以寫入模式打開,然后存儲一組數(shù)字的簡短程序用的是json.dump()振惰。而將這些數(shù)字讀取到內(nèi)存中的程序就用json.loud()歌溉。