系統(tǒng)自帶文本編輯器IDLE
,我使用的是Sublime Text
,python
文件執(zhí)行步驟類似shell
词渤,首先cd到目錄
八毯,之后分別執(zhí)行執(zhí)行chmod +x ./test.py
、./test.py
目錄:
- 輸入和輸出
- 基本數(shù)據(jù)類型
- list
- tuple
- dict
- set
- 條件判斷
- 循環(huán)
輸入和輸出
輸出
用print()在括號(hào)中加上字符串伟桅,就可以向屏幕上輸出指定的文字
示例:
print("hello world!")
print()函數(shù)也可以接受多個(gè)字符串哩牍,用逗號(hào)“,”隔開玲昧,就可以連成一串輸出:
示例:
print("123", "456", "789")
輸出:
123 456 789
print()
會(huì)依次打印每個(gè)字符串疗垛,遇到逗號(hào)“,”會(huì)輸出一個(gè)空格.
也可以打印整數(shù)
示例:
print(100)
print("1 + 2 = ", 3)
輸入
Python提供了一個(gè)input()罢洲,可以讓用戶輸入字符串乱灵,并存放到一個(gè)變量里.
示例:
name = input()
#name = input("please enter your name:")
print('hello,', name)
當(dāng)你輸入name = input()并按下回車后塑崖,Python交互式命令行就在等待你的輸入了。這時(shí)痛倚,你可以輸入任意字符规婆,然后按回車后完成輸入.
基本數(shù)據(jù)類型
整數(shù)、浮點(diǎn)數(shù)
整數(shù)蝉稳、浮點(diǎn)數(shù)和其他語言中一樣抒蚜,不再闡述
示例:
age = 10
weight = 60.1
字符串
字符串在python是以單引號(hào)'或雙引號(hào)"括起來的任意文本,比如'abc'耘戚,"xyz"
等等嗡髓,
示例:
print('I\'m \"OK\"!')
\\
表示轉(zhuǎn)義
布爾值
布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有True
收津、False
兩種值,注意代大小寫饿这,也可以通過布爾運(yùn)算計(jì)算出來:
示例:
#!/usr/bin/env python3
print(True)
print(2>1)
print(3<2)
輸出:
True
True
False
布爾值可以用and浊伙、or和not運(yùn)算,and運(yùn)算是與運(yùn)算,or運(yùn)算是或運(yùn)算, not運(yùn)算是非運(yùn)算
示例:
print("True and True : ", True and True)
print("True and 3<2 : ", True and 3<2)
print("True or 3<2 : ", True or 3<2)
print("False or 3<2 : ", False or 3<2)
print("not True : ", not True)
print("not 3<2 : ", not 3<2)
輸出:
True and True : True
True and 3<2 : False
True or 3<2 : True
False or 3<2 : False
not True : False
not 3<2 : True
數(shù)據(jù)類型轉(zhuǎn)換
>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
變量
示例:
a = 10
b = "abc"
c = True
a = "hello world!"
多個(gè)變量賦值:
#a、b长捧、b的值為1
a = b = c = 1
#1嚣鄙、2、john分別賦值給a串结、b哑子、b
a, b, c = 1, 2, "john"
可以把任意數(shù)據(jù)類型賦值給變量,同一個(gè)變量可以反復(fù)賦值肌割,而且可以是不同類型的變量卧蜓。這種變量本身類型不固定的語言稱之為動(dòng)態(tài)語言,與之對(duì)應(yīng)的是靜態(tài)語言把敞。靜態(tài)語言在定義變量時(shí)必須指定變量類型烦却,如果賦值的時(shí)候類型不匹配,就會(huì)報(bào)錯(cuò)先巴。
您也可以使用del語句刪除一些對(duì)象的引用:
del語句的語法是:
del var1[,var2[,var3[....,varN]]]]
示例:
var = '123'
print('前:', var)
del var
print('后:', var)
輸出:
前: 123
Traceback (most recent call last):
File "./test.py", line 7, in <module>
print('后:', var)
NameError: name 'var' is not defined
提示變量var未定義
也可以刪除多個(gè)變量:
del var_a, var_b
常量
所謂常量就是不能變的變量其爵,比如常用的數(shù)學(xué)常數(shù)π就是一個(gè)常量。在Python中伸蚯,通常用全部大寫的變量名表示常量:
PI = 3.14159265359
但事實(shí)上PI
仍然是一個(gè)變量摩渺,Python
根本沒有任何機(jī)制保證PI
不會(huì)被改變,所以剂邮,用全部大寫的變量名表示常量只是一個(gè)習(xí)慣上的用法.
Python
中的除法摇幻、取整、取余:
print('結(jié)果:', 10 / 3)
print('取整:', 10 // 3)
print('取余:', 10 % 3)```
輸出:
結(jié)果: 3.3333333333333335
取整: 3
取余: 1```
附:
字符串的一些其它操作:
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
#1挥萌、去除空格绰姻,strip()去除字符串的兩邊空格,rstrip()去除右邊的空格引瀑,lstrip()去除左邊的空格
str0 = ' 123456789 '
print('str0 : ', str0.strip())
#2狂芋、字符串復(fù)制
str1 = '字符串1'
str2 = str1
str2 = '字符換2'
print('str1 = ', str1)
print('str2 = ', str2)
#3、字符串的連接
str3 = 'hello '
str4 = 'world'
print('str3 + str4 : ', str3 + str4)
#4憨栽、查找子字符串的索引
str5 = 'hello world'
str6 = 'llo'
#如果沒找到帜矾,則報(bào)錯(cuò):ValueError: substring not found
subIndex = str5.index(str6)
#和index方法類似,不同:找不到返回的是-1
subIndex2 = str5.find(str6)
print ('子字符串索引:', subIndex)
#5屑柔、比較
print('123 = 456 嗎屡萤?:','123' == '456')
print('123 = 123 嗎?:','123' == '123')
#6掸宛、字符串長(zhǎng)度
print('字符串str5長(zhǎng)度:', len(str5))
#7死陆、字符串中的大小寫轉(zhuǎn)換
str7 = str8 = str9 = str10 = 'ABcdEf'
#大小寫互換
print('大小寫互換: ', str7.swapcase())
#首字母大寫
print('首字母大寫:', str8.capitalize())
#小寫
print('小寫:', str9.lower())
#大寫
print('大寫:', str10.upper())
#8、字符串前后顛倒
str12 = 'hello world'
print('字符串前后顛倒:', str12[::-1])
#9唧瘾、字符串的分割
str13 = 'ab,cde,fgh,ijk'
print('字符串分割:', str13.split(','))
#10措译、字符串的連接
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print('list -> 字符串:', delimiter.join(mylist))
#11迫像、字符串的替換
str14 = 'hello world'
str15 = 'python'
print('字符串的替換:', str14.replace('world', str15))
#12、字符串的截取
str16 = 'hello world'
#截取前三位字符組成新的字符串,包括索引0瞳遍,不包括索引3闻妓,結(jié)果:hel
print('截取前三位字符 :', str16[0:3])
print('截取字符串所有字符 :', str16[:])
print('截取第三個(gè)字符開始到結(jié)尾:', str16[3:])
print('截取從第0個(gè)字符開始到倒數(shù)第三個(gè)字符結(jié)束 :', str16[:-3])
print('截取第三個(gè)字符:', str16[2])
#0代表正數(shù)第一個(gè)字符,-1代表最后一個(gè)字符,-2代表倒數(shù)第二個(gè)字符,以此類推
print('截取倒數(shù)第一個(gè)個(gè)字符:', str16[-1])
print('截取倒數(shù)第三位到倒數(shù)第二位字符 :', str16[-3:-1])
print('截取倒數(shù)三位字符:', str16[-3:])
#13掠械、子字符串出現(xiàn)的次數(shù)
str17 = 'hello world'
str18 = 'ell'
print('字符\'l\'出現(xiàn)的次數(shù):', str17.count('l'))
#14由缆、編碼
print('編碼:', '中文'.encode('utf-8'))
輸出:
str0 : 123456789
str1 = 字符串1
str2 = 字符換2
str3 + str4 : hello world
子字符串索引: 2
123 = 456 嗎?: False
123 = 123 嗎猾蒂?: True
字符串str5長(zhǎng)度: 11
大小寫互換: abCDeF
首字母大寫: Abcdef
小寫: abcdef
大寫: ABCDEF
字符串前后顛倒: dlrow olleh
字符串分割: ['ab', 'cde', 'fgh', 'ijk']
list -> 字符串: Brazil,Russia,India,China
字符串的替換: hello python
截取前三位字符 : hel
截取字符串所有字符 : hello world
截取第三個(gè)字符開始到結(jié)尾: lo world
截取從第0個(gè)字符開始到倒數(shù)第三個(gè)字符結(jié)束 : hello wo
截取第三個(gè)字符: l
截取倒數(shù)第一個(gè)個(gè)字符: d
截取倒數(shù)第三位到倒數(shù)第二位字符 : rl
截取倒數(shù)三位字符: rld
字符'l'出現(xiàn)的次數(shù): 3
編碼: b'\xe4\xb8\xad\xe6\x96\x87'
list
Python
內(nèi)置的一種數(shù)據(jù)類型是列表:list
均唉。lis
t是一種有序
的集合,可以隨時(shí)添加和刪除其中的元素肚菠。
示例:
fruit = ['apple', 'banana', 'strawberry']
print(fruit)
輸出:
['apple', 'banana', 'strawberry']
用len()函數(shù)可以獲得list元素的個(gè)數(shù):
len(fruit)
用索引來訪問list中每一個(gè)位置的元素舔箭,記得索引是從0開始的:
print(fruit[0])
print(fruit[1])
print(fruit[2])
輸出
apple
banana
strawberry
Traceback (most recent call last):
File "./test.py", line 8, in <module>
print(fruit[3])
IndexError: list index out of range
當(dāng)索引超出了范圍時(shí),Python會(huì)報(bào)一個(gè)IndexError
錯(cuò)誤蚊逢,所以层扶,要確保索引不要越界,記得最后一個(gè)元素的索引是len(classmates) - 1
烙荷。
list常見操作總結(jié):
#創(chuàng)建list
fruit = ['apple', 'banana', 'strawberry', 'apple', 'banana', 'strawberry']
#獲取最后一個(gè)元素
fruit[-1]
#取前3個(gè)元素,如果第一個(gè)索引是0镜会,可以省略
fruit[:3]
#后兩個(gè)元素
fruit[-2:]
#前五個(gè)數(shù),每?jī)蓚€(gè)取一個(gè)
fruit[:5:2]
#所有數(shù)终抽,每5個(gè)取一個(gè):
fruit[::5]
#[:]可以原樣復(fù)制一個(gè)list
fruit[:]
#添加元素
fruit.append('tangerine')
#制定位置插入元素戳表,如:第一個(gè)位置
fruit.insert(1, 'tomato')
#刪除最后一個(gè)元素
fruit.pop()
#刪除指定位置的元素
#fruit.pop(1)
del fruit[0]
#元素替換
fruit[1] = 'durian'
#數(shù)組的截取
subFruit = fruit[0:2]
#list的拼接
newFruit = fruit + subFruit
#判斷元素是否在list中,下面代碼輸出True
print('durian' in newFruit)
#取得最大值
print(max(fruit))
#取得最小值
print(min(fruit))
#元素在數(shù)組中出現(xiàn)的次數(shù)
print(newFruit.count('durian'))
#列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置
print(newFruit.index('durian'))
#移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)
newFruit.remove('durian')
#反向列表中元素
newFruit.reverse()
# *號(hào)用于重復(fù)列表昼伴, 結(jié)果[12, 12, 12, 12]
ages = [12]*4
list里面的元素的數(shù)據(jù)類型也可以不同匾旭,比如:
L = ['Apple', 123, True]
tuple
另一種有序列表叫元組:tuple
。tuple
和list
非常類似圃郊,但是tuple
一旦初始化就不能修改价涝,比如同樣是列出水果:
fruit = ('apple', 'banana', 'strawberry')
現(xiàn)在,fruit
這個(gè)tuple不能變了描沟,它也沒有append()飒泻,insert()
這樣的方法鞭光。其他獲取元素的方法和list
是一樣的吏廉,你可以正常地使用classmates[0],classmates[-1]
惰许,但不能賦值成另外的元素席覆。
不可變的tuple
有什么意義?因?yàn)?code>tuple不可變汹买,所以代碼更安全佩伤。如果可能聊倔,能用tuple代替list就盡量用tuple
。
tuple
的陷阱:當(dāng)你定義一個(gè)tuple
時(shí)生巡,在定義的時(shí)候耙蔑,tuple
的元素就必須被確定下來,比如:
t = (1, 2)
如果要定義一個(gè)空的tuple孤荣,可以寫成():
t = ()
但是甸陌,要定義一個(gè)只有1個(gè)元素的tuple,如果你這么定義:t = (1)
, 定義的不是tuple
盐股,是1
這個(gè)數(shù)钱豁!這是因?yàn)槔ㄌ?hào)()
既可以表示tuple
,又可以表示數(shù)學(xué)公式中的小括號(hào)疯汁,這就產(chǎn)生了歧義牲尺,因此,Python規(guī)定幌蚊,這種情況下谤碳,按小括號(hào)進(jìn)行計(jì)算,計(jì)算結(jié)果自然是1,所以溢豆,只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號(hào),估蹄,來消除歧義:t = (1, )
dict
Python內(nèi)置了字典:dict
的支持,dict
全稱dictionary
示例:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
dict的常見操作
#更新數(shù)據(jù)
d['Tracy'] = 100
#添加數(shù)據(jù)沫换, key不存在臭蚁,就創(chuàng)建
d['joy'] = '70'
#判斷某個(gè)元素是否存在,可以通過key判斷
print('joy' in d)
#刪除元素
d.pop('joy')
set
set
和list
類似讯赏,只是在set
中沒有重復(fù)的元素,要?jiǎng)?chuàng)建一個(gè)set
垮兑,需要提供一個(gè)list
作為輸入集合.
set常見操作:
x = set('abcdefg')
y = set(['d', 'i', 'm', 'i', 't', 'e'])
#輸出{'f', 'd', 'g', 'c', 'b', 'e', 'a'}
print(x)
#輸出:{'d', 'm', 'e', 'i', 't'}
print(y)
#x、y的交集漱挎,一下兩種方式都可以
print(x & y)
#print(x.intersection(y))
#x系枪、y的并集
print(x | y)
#print(x.union(y))
# x - y 差集,即從y中減去存在于x中的元素
print(y - x)
#print(y.difference(x))
#對(duì)稱差:x和y的交集減去并集
print(y ^ x)
#print(x.symmetric_difference(y))
# 函數(shù)操作 ------------------------------
#x中元素個(gè)數(shù)
print(len(x))
#判斷元素i是否在x中
print('i' in x)
s = set('adb')
#s是否是x的子集, True
print(s.issubset(x))
#s中增加x中的元素
s.update(x)
#添加元素
s.add(1)
#刪除元素,如果沒有這個(gè)元素,返回異常
s.remove(1)
#如果存在元素磕谅,就刪除私爷;沒有不報(bào)異常
s.discard(2)
#清空元素
s.clear()
#隨機(jī)刪除一個(gè)元素,注意:和list不同膊夹,list刪除刪除最后一個(gè)元素衬浑,set沒得元素是無序的,隨機(jī)刪除一個(gè)元素
x.pop()
集合操作符號(hào):
條件判斷
if
語句實(shí)現(xiàn)放刨,
示例:
num = 20
if num >= 20:
print('num 大于等于20')
注意不要少寫了冒號(hào):
增加else
語句
示例:
num = 20
if num >=20:
print('num 大于等于20')
else:
print('num 小于20')
增加elif
語句
示例:
num = 20
if num > 20:
print('num 大于20')
elif num == 20:
print('num 等于20')
else:
print('num 小于20')
if
判斷條件還可以簡(jiǎn)寫工秩,比如寫:
num = 20
if num:
print('default')
只要num非零(可以為負(fù)數(shù))
即為True
,就會(huì)輸出default
。
input()
結(jié)合if
示例:
birth = input('birth: ')
if birth < 2000:
print('00前')
else:
print('00后')
運(yùn)行結(jié)果:
birth: 1999
Traceback (most recent call last):
File "./test.py", line 5, in <module>
if birth < 2000:
TypeError: '<' not supported between instances of 'str' and 'int'
這是因?yàn)?code>input()返回的數(shù)據(jù)類型是str
助币,str
不能直接和整數(shù)比較浪听,必須先把str
轉(zhuǎn)換成整數(shù)。Python提供了int()
函數(shù)來完成這件事情:
s = input('birth: ')
birth = int(s)
if birth < 2000:
print('00前')
else:
print('00后')
循環(huán)
Python提供了for循環(huán)
和while循環(huán)
(在Python中沒有do..while循環(huán)
).
while循環(huán)
示例:
count = 0
while count < 4:
print('count: ', count)
count = count + 1
輸出:
count: 0
count: 1
count: 2
count: 3
while … else
示例:
count = 0
while count < 4:
print('count: ', count)
count = count + 1
else:
print('count已經(jīng)等于4眉菱,退出循環(huán)')
輸出:
count: 0
count: 1
count: 2
count: 3
count已經(jīng)等于4迹栓,退出循環(huán)
for循環(huán)
示例
for letter in 'Python': # 第一個(gè)實(shí)例
print ('當(dāng)前字母 :',letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二個(gè)實(shí)例
print ('當(dāng)前水果 :', fruit)
print ("Good bye!")
輸出:
當(dāng)前字母 : P
當(dāng)前字母 : y
當(dāng)前字母 : t
當(dāng)前字母 : h
當(dāng)前字母 : o
當(dāng)前字母 : n
當(dāng)前水果 : banana
當(dāng)前水果 : apple
當(dāng)前水果 : mango
Good bye!
另外一種執(zhí)行循環(huán)的遍歷方式是通過索引,如下實(shí)例:
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print ('當(dāng)前水果 :', fruits[index])
print ("Good bye!")
輸出:
當(dāng)前水果 : banana
當(dāng)前水果 : apple
當(dāng)前水果 : mango
Good bye!
dict的遍歷:
d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
print(key)
輸出:
a
b
c
也可以同時(shí)輸出key
和value
:
d = {'a': 1, 'b': 2, 'c': 3}
for (key, value) in d.items():
print(key, value)
字符串的遍歷:
for ch in 'ABC':
print(ch)
輸出:
A
B
C
當(dāng)我們使用for循環(huán)時(shí)俭缓,只要作用于一個(gè)可迭代對(duì)象迈螟,for
循環(huán)就可以正常運(yùn)行,而我們不太關(guān)心該對(duì)象究竟是list
還是其他數(shù)據(jù)類型尔崔。那么答毫,如何判斷一個(gè)對(duì)象是可迭代對(duì)象呢?方法是通過collections
模塊的Iterable
類型判斷:
from collections import Iterable
print(isinstance('abc', Iterable)) # str是否可迭代
print(isinstance([1,2,3], Iterable)) # list是否可迭代
print(isinstance(123, Iterable)) # 整數(shù)是否可迭代
輸出:
True
True
False
Python內(nèi)置的enumerate函數(shù)可以把一個(gè)list變成索引-元素對(duì)季春,這樣就可以在for循環(huán)中同時(shí)迭代索引和元素本身:
for i, value in enumerate(['A', 'B', 'C']):
print(i, value)
輸出:
0 A
1 B
2 C
continue洗搂、break
while
語句時(shí)還有另外兩個(gè)重要的命令 continue,break
來跳過循環(huán)载弄,continue
用于跳過該次循環(huán)耘拇,break
則是用于退出循環(huán),此外"判斷條件"還可以是個(gè)常值宇攻,表示循環(huán)必定成立
continue示例:
fruits = ['banana', 'apple', 'mango', 'durian']
for index in range(len(fruits)):
if index == 2:
continue
else:
print ('當(dāng)前水果 :', fruits[index])
print ("Good bye!")
輸出:
當(dāng)前水果 : banana
當(dāng)前水果 : mango
Good bye!
break示例:
fruits = ['banana', 'apple', 'mango', 'durian']
for index in range(len(fruits)):
if index == 2:
break
else:
print ('當(dāng)前水果 :', fruits[index])
print ("Good bye!")
輸出:
當(dāng)前水果 : banana
當(dāng)前水果 : apple
Good bye!