Python學習之路-變數、字串、函式
阿新 • • 發佈:2019-02-07
目錄
變數和型別
基本變數型別
- 整數
- 浮點數
- 字串
- 布林值
- 空值
- 函式
- 模組
- 型別*
- 自定義型別
變數定義
變數儲存在記憶體中的值。這就意味著在建立變數時會在記憶體中開闢一個空間。
基於變數的資料型別,直譯器會分配指定記憶體,並決定什麼資料可以被儲存在記憶體中。
變數可以指定不同的資料型別,這些變數可以儲存整數,小數或字元。(弱型別)
變數賦值
每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。(重要!!!)
等號(=)用來給變數賦值,等號(=)運算子左邊是一個變數名,等號(=)運算子右邊是儲存在變數中的值。
# -*- 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))