Python語言學(xué)習(xí):Python語言學(xué)習(xí)之?dāng)?shù)據(jù)類型/變量/字符串/操作符/轉(zhuǎn)義符的簡介、案例應(yīng)用之詳細(xì)攻略
1、基本數(shù)據(jù)類型
int整型、long長整型、float浮點型、complex復(fù)數(shù)
str字符串
類型轉(zhuǎn)換函數(shù)
print(type(3.14))? ? ? ? ? ? ? ? ? ?#獲取括號內(nèi)參數(shù)的數(shù)據(jù)類型
print(isinstance(3.14,float)) ?#判斷類型;判斷a是否是float類型
print(int(5.99))? ? ? ? ? ? ? ? ? ? ??#轉(zhuǎn)為整型;輸出結(jié)果是5;不是四舍五入而是直接砍掉小數(shù)點
print(str(5.99))? ? ? ? ? ? ? ? ? ? ??#轉(zhuǎn)為字符串型;輸出結(jié)果是'5.99'
print(float(520))? ? ? ? ? ? ? ? ? ??#轉(zhuǎn)為小數(shù)點型;輸出結(jié)果是520.0
1.1、數(shù)值numerics類型
int整型:包含boolean,
float浮點型:Python是用C語言編寫的,float浮點型對應(yīng)C語言的double類型
complex復(fù)數(shù)類型:real實部,imaginary虛部,實現(xiàn)方式z.real和。Python不同于其他語言,直接支持復(fù)數(shù)類型,例如
import?sys
a = 3
b = 4
c = 5.66
d = 8.0
e = complex(c, d)? ? ? ? ? ? ? ? ? ? ??#創(chuàng)建一個值為 real + imag * j 的復(fù)數(shù)
f = complex(float(a), float(b))
print?("a is type"?, type(a))? ? ? ? ??#使用type函數(shù)查看變量所屬類型
print?("c is type"?, type(c))
print?("e is type"?, type(e))
print?("f is type"?, type(f))
print(a + b)
print?(b / a)
print?(b // a)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#雙斜杠//表示b/a之后,再約等于的整型
print?(e)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#打印復(fù)數(shù)的值
print?("e's real part is: "?, e.real)
print?("e's imaginary part is: "?, e.imag)
print?(sys.float_info)? ? ? ? ? ? ? ? ? ??#float類型通過系統(tǒng)命令打印出其支持的范圍

1.2、變量Variable
變量是用來存儲信息的,變量名屬于identifier,
(1)、變量命名規(guī)則
第一個字符必須是字母或者下劃線,其余字符可以是字母,數(shù)字,或者下劃線,區(qū)分大小寫,如:合法:i、 name_3_4、big_bang;不合法:2people、this is tom、my-name、 >123b_c2
(2)、全局變量和局部變量
x = 60??????#全局變量 def?foo1(x): ????print("x is: "?+ str(x)) ?#x is: 60 ????x = 3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#局部Local變量 ????print("change local x to "?+ str(x))? ??#change local x to 3 foo1(x)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#輸出全局變量 print('x is still', str(x))? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#x is still 60 (1)函數(shù)內(nèi)部使用global關(guān)鍵字修改全局變量 x = 60 def?foo2(): ????global?x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ??#內(nèi)部,通過關(guān)鍵詞global聲明為全局變量 ????print("x is: "?+ str(x))? ? ? ? ? ? ? ? ? ? ?#x is: 60 ????x = 3 ????print("change local x to "?+ str(x)) #change local x to 3 foo2() print('value of x is'?, str(x))? ? ? ? ? ? ? ??#value of x is 3 |
#局部變量和全局變量: def?discounts(price,rate):? ? ? ? ? ? ? ? ? ? ? ? ??#加上*號代表形參*params ????final_price=price*rate ????old_price=88? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#此處試圖修改全局變量 ????print("函數(shù)內(nèi)部試圖修改全局變量,修改后old_price的值是:"?,old_price) ????return?final_price old_price=float(input("請輸入原價:")) rate=float(input("請輸入折扣率:")) new_price= discounts(old_price,rate)? ? ? ? ? ? ? ? ? ?#調(diào)用函數(shù);輸出的是局部變量: 88 print("外部修改后old_price的值是:"?,old_price)? ?#全局變量直接輸出: 100.0 print("打折后的價格是:"?,new_price)? ? ? ? ? ? ? ? ? ??#直接輸出:80.0 |
1.3、字符串String
字符串:我們所認(rèn)知的字符串就是引號內(nèi)的一切東西,也可以將字符串叫做文本。
(1)、字符串拼接:python中的字符串在C語言中體現(xiàn)為是一個字符數(shù)組,每次創(chuàng)建字符串時候需要在內(nèi)存中開辟一塊連續(xù)的空,并且一旦需要修改字符串的話,就需要再次開辟空間,+號每出現(xiàn)一次就會在內(nèi)從中重新開辟一塊空間。
(1)、單引號、雙引號、三引號用法
print("hello World!"); ? ? #python里面的字符串既可以單引號也可以雙引號
print('hello World!');
print('''This is first line
This is second line
Last line''');

(2)、不可變(immutable)、字符串的format用法
age?= 3
name = "Tom"
print("{0} was {1} years old".format(name, age))??#{0}、{1}分別對應(yīng)字符串的format內(nèi)的參數(shù)
print(name + " was "?+ str(age) + " years old")? ? ?#使用+符號,聯(lián)合所有字符串的方法
(3)、當(dāng)字符串中出現(xiàn)單雙引號時,使用轉(zhuǎn)義符號(\)
print("Let\'s go!")? ? ?#使用轉(zhuǎn)義字符(\)
print('C:\now')? ? ? ? ?#此時\反斜杠表示是換行
str1=r'C:\now'? ? ? ? ??#使用原始字符串,只需加個r
print(str1)? ? ? ? ? ? ? ??#C:\now
str2="""春天來了,
春天的腳步更近了,
啊,
春天"""
str2
print(str2[:2]) ?#輸出:春天

(4)、字符串格式化、各種符號含義
格式化可理解為翻譯
符號 | 說明 |
%c | 格式化字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數(shù) |
%o | 格式化無符號八進(jìn)制數(shù) |
%x | 格式化無符號十六進(jìn)制數(shù) |
%X | 格式化無符號十六進(jìn)制數(shù)(大寫) |
%f | 格式化浮點數(shù)字,可指定小數(shù)點后的精度 |
%e | 用科學(xué)計數(shù)法格式化浮點數(shù) |
%E | 作用同%e,用科學(xué)計數(shù)法格式化浮點數(shù) |
%g | 根據(jù)值的大小決定使用%f 或%e |
%G | 作用同%g,根據(jù)值的大小決定使用%f 或者%E |
#format的位置參數(shù)和關(guān)鍵字參數(shù)
str="{0}上海{1}有限公司"
print(str.format("云崖牛","智能")) ?#format的位置參數(shù)應(yīng)用;云崖牛上海智能有限公司
str2="{0:.1f}{1}"? ? ? ? ? ? ? ? ? ? ? ? ? ??#四舍五入保留一個浮點數(shù)
print(str2.format(3.19,"GB")) ?? ? ??#輸出:3.2GB
str1="{a}上海有限公司"
print(str1.format(a="云崖牛",b="設(shè)計")) #format的關(guān)鍵字參數(shù)應(yīng)用;云崖牛上海設(shè)計有限公司
1)、字符串格式化符號
print("%c"?% 97) ? ? ? ? ? ? ? ? ? ? ? ? ? ??#格式化字符和ASCII碼;輸出a
print("%c %c %c"?% (97,98,99))? ? ?#格式化字符和ASCII碼;輸出a b c
print("%s"?% "云崖牛") ? ? ? ? ? ? ? ? ? ?#格式化字符串
print("%d+%d=%d"?% (1,2,1+2)) ???#格式化整數(shù)
#(1)格式化進(jìn)制符號(人類有10個手指頭,故常用十進(jìn)制):%o八進(jìn)制、%x十六進(jìn)制、%X十六進(jìn)制大寫
print("%X"?% 10) ? ? ? ? ? ??#格式化整數(shù);輸出A
print("%f"?% 3.14) ?? ? ? ? ?#格式化小數(shù),定精度;默認(rèn)六位;輸出3.140000。%e是科學(xué)計數(shù)法,但%g是智能選擇%f或%e
2)、格式化操作符輔助指令
print("%10.2f"?% 3.1467) ? ??#前邊占10位,后邊精確兩位小數(shù);輸出: ?????3.15
print("%010d"?% 3.14) ? ? ? ?#前邊占10位,0代替空格(前邊再加-表示左對齊);輸出:0000000003
print("%.2e"?% 31.467) ?? ? ?#輸出:3.15e+01
print("%+d"?% 5) ? ? ? ? ? ? ? ??#十進(jìn)制%d,輸出:+5
print("%#o"?% 10) ?? ? ? ? ? ? ?#輸出八進(jìn)制0O、十六進(jìn)制0x;輸出:0o12
1.4、格式化操作符輔助命令
符號 | 說明 |
m.n | m是顯示的最小總寬度,n是小數(shù)點后的位數(shù) |
- | 用于左對齊 |
+ | 在正數(shù)前面顯示加號(+) |
# | 在八進(jìn)制數(shù)前面顯示 '0o',在十六進(jìn)制數(shù)前面顯示'0x'或 '0X' |
0 | 顯示的數(shù)字前面填充’0’取代空格 |
1.5、python的轉(zhuǎn)義字符及其含義
符號 | 說明 |
\' | 單引號 |
\" | 雙引號 |
\a | 發(fā)出系統(tǒng)響鈴聲 |
\b | 退格符 |
\n | 換行符 |
\t | 橫向制表符(TAB) |
\v | 縱向制表符 |
\r | 回車符 |
\f | 換頁符 |
\o | 八進(jìn)制數(shù)代表的字符 |
\x | 十六進(jìn)制數(shù)代表的字符 |
\0 | 表示一個空字符 |
\\ | 反斜杠 |
2、運算、操作符及其優(yōu)先級問題
算數(shù)運算 | a=b=c=d=e=10 a+=1 b-=1 c*=1 d/=1???#輸出浮點型 e//=1??#輸出整型 f=a%1??#輸出余數(shù) g=a**2?#求a得2次冪 print(a,b,c,d,e,f,g) #輸出結(jié)果為11 9 10 10.0 10 0 81 (1)如果對列表進(jìn)行算數(shù): list=[123,456] #list1=[123,456]+"云崖牛" ?#加法運算是不對的 list2=list*3??#但可以乘法運算 print(list2) ?#輸出得到[123, 456, 123, 456, 123, 456] |
比較運算 | |
賦值運算 | 取模賦值運算%=、 取整除賦值運算//=、 |
邏輯運算 | or?and?not? |
成員運算 | 運算符in、not in:若在指定的序列中找到、找不到返回true |
身份運算 | 運算符is、is not:判斷兩個標(biāo)識符是、不是引用自一個對象,返回true。 |
位運算 | |
