目錄
變量和類型
基本變量類型
- 整數
- 浮點數
- 字符串
- 布爾值
- 空值
- 函數
- 模塊
- 類型*
- 自定義類型
變量定義
變量存儲在內存中的值。這就意味着在創建變量時會在內存中開闢一個空間。
基於變量的數據類型,解釋器會分配指定內存,並決定什麼數據可以被存儲在內存中。
變量可以指定不同的數據類型,這些變量可以存儲整數,小數或字符。(弱類型)
變量賦值
每個變量在使用前都必須賦值,變量賦值以後該變量纔會被創建。(重要!!!)
等號(=)用來給變量賦值,等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。
# -*- coding: utf-8 -*-
import string
# 基本類型
print(type(None))
print(type(True))
print(type(12345))
print(type(123.45))
print(type(1234.))
print(type('abc'))
# 容器類型
print(type([1, 2, 3, 'a', 'bc']))
print(type((1, 2, 3, 'abc')))
values = ['abc', 1, 2, 3.]
print(type(values[3]))
print(type(set(['a', 1, 2.])))
print(type({'a':123, 4:'bcd', 5:'efg'}))
# 函數
def func(): print(100)
print(type(func))
# 模塊
print(type(string))
# 自定義類型與類型實例
class Cls: pass
print(type(Cls))
cls = Cls()
print(type(cls))
# 變量賦值
try:
print(x) # 變量必須先賦值再使用
except NameError:
print("NameError: name 'x' is not defined")
x = 100
x = 'abcd' # x的類型不受限制
常見字符串處理
- 去除空格及特殊符號:strip, lstrip, rstrip
- 複製字符串:str1 = str2
- 連接字符串
str2 += str1
new_str = str2 + str1
- 查找字符串:pos = str1.index(str2)
- 比較字符串:cmp(str1, str2)
- 字符串長度:len(str)
- 大小寫轉換
u_str = str.upper()
l_str = str.lower()
- 首字母大寫:str.capitalize(); string.capword(str)
- 分割與合併字符串:split, splitlines, join
- 類型轉換:int, float轉換
- 格式化字符串
- 字符串測試
str.startwith(prefix)
str.endwith(suffix)
str.isalnum() # 是否全是字母和數字,並至少有一個字符。
str.isalpha() # 是否全是字母,並至少有一個字符。
str.isdigit() # 是否全是數字,並至少有一個字符。
str.isspace() # 是否全是空白字符,並至少有一個字符。
str.islower() # 字母是否全是小寫
str.isupper() # 字母是否全是大寫
str.istitle() # 首字母是否大寫
# -*- coding: utf-8 -*-
import string
# strip去除空格
s = ' abcd efg '
print(s.strip())
print(s.lstrip())
print(s.rstrip())
print(s)
# 字符串連接
print('abc_' + 'defg')
s = 'abcdefg'
s += '\nhijk'
print(str)
# 大寫小
s = 'abc defg'
print(s.upper())
print(s.upper().lower())
print(s.capitalize())
# 位置和比較
s_1 = 'abcdefg'
s_2 = 'abdefgh'
print(s_1.index('bcd'))
try:
print(s_1.index('bce'))
except ValueError:
print('ValueError: substring not found')
print(s_1 == s_1) # cmp函數被Python3移除了
print(s_1 > s_2)
print(s_2 > s_1)
# 分割和連接
s = 'abc,def,ghi'
print(s.split(','))
s = '123\n456\n789'
numbers = s.splitlines()
print(numbers)
print('-'.join(numbers))
# 常用判斷
s = 'abcdefg'
print(s.startswith('abc'))
print(s.endswith('efg'))
print('abcd1234'.isalnum())
print('\tabcd1234'.isalnum())
print('abcd'.isalpha())
print('12345'.isdigit())
print(' '.isspace())
print('acb125'.islower())
print('A1B2C'.isupper())
print('Hello world!'.istitle())
# 數字到字符串
print(str(5))
print(str(5.))
print(str(-5.23))
print(int('1234'))
print(float('-23.456'))
# 格式化字符串
print('Hello %s!' % 'world')
print('%d-%.2f-%s' % (4, -2.3, 'hello'))
條件判斷
真值判斷
if x == True:
if x:
if not x:
空值判斷
if x is None:
if not x:
比較
if a == b:
if a > b:
...
# -*- coding: utf-8 -*-
# if判斷
a = 100
b = 200
c = 300
if c == a:
print(a)
elif c == b:
print(b)
else:
print(c)
# None的判斷
x = None
if x is None:
print('x is None')
if not x:
print('x is None')
# for循環
s = 0
for i in range(0, 101):
s += i
print(s)
# while循環
s = 0
i = 0
while i <= 100:
s += i
i += 1
print(s)
# continue/pass/break
for i in range(0, 100):
if i < 10:
pass
elif i < 30:
continue
elif i < 35:
print(i)
else:
break
循環控制
for循環
for i in range(begin, end, steps): <=> for (i = begin; i < end; i += steps)
while循環
while 條件判斷:
循環嵌套
循環控制
break
continue
pass
函數
函數定義格式
- 默認參數
- 可變參數:*args,自動組裝成tuple
- 關鍵字參數:*args,自動組裝成dict
- 命名關鍵字參數
函數調用
- 函數名(參數名)
- 模塊名.函數名(參數名)
- 帶參數名調用
# -*- coding: utf-8 -*-
# 函數定義和默認參數
def func(x, y = 500):
print(x, y)
func(150)
func(100, 200)
func(y = 300, x = 100)
# 可變參數
def func(name, *numbers):
print(name)
print(numbers)
func('Tom', 1, 2, 3, 4)
# 關鍵字參數
def func(name, **kvs):
print(name)
print(kvs)
func('Jack', china = 'Beijing', uk = 'London')
# 命名關鍵字參數
def func(*, china, uk): # *用於和普通參數做分割,*args一樣效果
print(china, uk)
func(china = 'Beijing', uk = 'London') # 必須傳入參數名
# 複雜情況
def func(a, b, c = 0, *args, **kvs):
print(a, b, c, args, kvs)
func(1, 2)
func(1, 2, 3)
func(1, 2, 3, 'a', 'b')
func(1, 2, 3, 'a', 'b', china = 'Beijing', uk = 'London')
func(1, 2, 3, *('a', 'b'), **{'china':'Beijing', 'uk':'London'})
# 遞歸的經典例子!
def fib(n):
if n < 1:
raise ValueError
elif (n == 1) or (n == 2):
return 1
else:
return fib(n - 1) + fib(n - 2)
print(fib(1))
print(fib(2))
print(fib(3))
print(fib(4))
print(fib(5))
print(fib(6))