怎樣做網(wǎng)站反鏈/北京網(wǎng)站優(yōu)化多少錢
文章目錄
- 基礎(chǔ)
- 字符串
- 字面量
- 常用的值類型
- 注釋
- 變量
- print語(yǔ)句
- 數(shù)據(jù)類型
- 數(shù)據(jù)類型轉(zhuǎn)換
- 標(biāo)識(shí)符
- 運(yùn)算符
- 字符串拓展
- 小結(jié)
2023.10.28 周六
最近打算學(xué)一下Python,畢竟確實(shí)簡(jiǎn)單方便,而且那個(gè)編程語(yǔ)言排名還是在第一。不過(guò)不打算靠它吃飯,深不深入暫且不說(shuō),準(zhǔn)備先把語(yǔ)法學(xué)一下,嘗試用py去刷算法。
講道理語(yǔ)法之前學(xué)過(guò)py基礎(chǔ),不過(guò)感覺又忘光了,這里再跟著b站黑馬的視頻學(xué)學(xué),先記一下。
貼一下鏈接 B站 - 黑馬程序員2022python教程
基礎(chǔ)
字符串
是指由任意數(shù)量的字符組成,需要用雙引號(hào)包圍起來(lái)
字面量
字面量是被寫在代碼中的固定的值。
字面量可以是整數(shù)字面量、固定的浮點(diǎn)數(shù)或固定的字符串字面量
如何將字面量輸出到屏幕上,需要使用 print
語(yǔ)句
常用的值類型
注釋
單行注釋以 #
作為開頭,建議有空格隔開
# 這是一個(gè)單行注釋
多行注釋以三個(gè)雙引號(hào)"""
引起來(lái)的內(nèi)容作為注釋的內(nèi)容,支持換行
"""
這里是
一個(gè)
多行注釋
"""
變量
變量是存儲(chǔ)計(jì)算結(jié)果或表示值的抽象概念
變量定義格式為 變量名 = 變量值
age = 50
從這來(lái)看,我本以為,py沒有明確的類型要求,那么應(yīng)該是弱類型語(yǔ)言。但實(shí)際完全不對(duì),強(qiáng)弱語(yǔ)言和動(dòng)靜語(yǔ)言的區(qū)別和這沒關(guān)系,具體見 Python到底是強(qiáng)類型語(yǔ)言,還是弱類型語(yǔ)言? ,我覺得說(shuō)的比我有道理,那么暫依此來(lái)看,簡(jiǎn)單來(lái)說(shuō)強(qiáng)弱類型實(shí)際是取決于 “程序?qū)τ?untrapped errors 的檢查強(qiáng)度”,由此看python是動(dòng)態(tài)語(yǔ)言沒錯(cuò)但也是強(qiáng)類型語(yǔ)言。
print語(yǔ)句
import sys # import貌似是必須放在文件最上面,否則會(huì)報(bào)錯(cuò)print(50)
print("hello")
# 打印多個(gè)值:50、hello、50.5、True、None(None也可以打印出來(lái),True也可以,但是作為字符串值),
# 用|分隔(默認(rèn)是空格),結(jié)尾用兩個(gè)換行(默認(rèn)是一個(gè)換行)
print(50, "hello", 50.5, True, None, sep="|", end="\n\n")
# sep也可以是None,表示不分隔,end也可以是None,表示不換行;
# file是輸出到哪里,默認(rèn)是sys.stdout,也就是控制臺(tái)
# flush是是否刷新緩沖區(qū),默認(rèn)是False。True表示立即輸出,False表示緩沖區(qū)滿了再輸出
print(-1.11, "你好", sep=None, end="\t\n", file=sys.stdout, flush=False)
# 輸出到文件,如果文件不存在會(huì)自動(dòng)創(chuàng)建,如果文件存在會(huì)覆蓋
print("hello world", file=open("hello.txt", "w"))
# 輸出到文件,如果文件不存在會(huì)自動(dòng)創(chuàng)建,如果文件存在會(huì)在文件末尾追加
print("hello world", file=open("hello.txt", "a"))
# 輸出到文件,如果文件不存在會(huì)自動(dòng)創(chuàng)建,如果文件存在會(huì)報(bào)錯(cuò)
# print("hello world",file=open("hello.txt","x"))
# 輸出到內(nèi)存流
import iof = io.StringIO() # 創(chuàng)建內(nèi)存流
print("hello world", 123, file=f) # 這里不會(huì)輸出到控制臺(tái),而是輸出到內(nèi)存流,也就是f
print(f.getvalue()) # 獲取內(nèi)存流的值并打印
f.close()
# 輸出到標(biāo)準(zhǔn)錯(cuò)誤流,也就是控制臺(tái),會(huì)打印為紅色的報(bào)錯(cuò)信息
print("hello world error", file=sys.stderr)
print("經(jīng)過(guò)實(shí)驗(yàn),打印的錯(cuò)誤信息并不是真的錯(cuò)誤,下面的語(yǔ)句還是可以執(zhí)行的:", 3.5 * 2.4)
price = 3.5
print("簡(jiǎn)單的運(yùn)算也可以打印啊",price * 2.4,sep=" —— ")
打印結(jié)果如下,雖然不知道為什么error那條信息會(huì)出現(xiàn)在最開始。。但是調(diào)試的話,它又會(huì)出現(xiàn)在最下面。。大概打印到流又從流獲取不是同步操作?
hello world error
50
hello
50|hello|50.5|True|None-1.11 你好
hello world 123經(jīng)過(guò)實(shí)驗(yàn),打印的錯(cuò)誤信息并不是真的錯(cuò)誤,下面的語(yǔ)句還是可以執(zhí)行的: 8.4
簡(jiǎn)單的運(yùn)算也可以打印啊 —— 8.4
數(shù)據(jù)類型
Python中變量沒有類型,只有存儲(chǔ)的數(shù)據(jù)有類型
字符串、整數(shù)和浮點(diǎn)數(shù)是Python中常見的三類數(shù)據(jù)類型,它們的類型名稱分別為string、int和float
type語(yǔ)句查看變量中存儲(chǔ)的數(shù)據(jù)類型,有返回值
print(type(-9)) # <class 'int'>
print(type(9 * 9)) # <class 'int'>
print(type(-920.554)) # <class 'float'>
print(type(-9 * 9.1 / 2.5)) # <class 'float'>
print(type(True)) # <class 'bool'>str_type = type("nihao")
print(type(str_type)) # <class 'type'>print(print(type("nihao"))) # <class 'str'>(換行)Noneprint(print()) #(換行)Noneprint(type(print(666))) # 666(換行)<class 'NoneType'>
數(shù)據(jù)類型轉(zhuǎn)換
在Python中,使用int、float、str語(yǔ)句進(jìn)行類型轉(zhuǎn)換,注意結(jié)果輸出。
任何類型都可轉(zhuǎn)成字符串。
字符串要轉(zhuǎn)換成數(shù)字必須只有數(shù)字,否則報(bào)錯(cuò)。
浮點(diǎn)數(shù)轉(zhuǎn)整數(shù)會(huì)丟失精度,小數(shù)部分沒了。
# 萬(wàn)物皆可轉(zhuǎn)成字符串
print(type(str(11)), str(11)) # <class 'str'> 11
print(type(str(11.11)), str(11.11)) # <class 'str'> 11.11
print(type(str(True)), str(True)) # <class 'str'> True
print(type(str([1, 2, 3])), str([1, 2, 3])) # <class 'str'> [1, 2, 3]
print(type(str((1, 2, 3))), str((1, 2, 3))) # <class 'str'> (1, 2, 3)
print(type(str({1, 2, 3})), str({1, 2, 3})) # <class 'str'> {1, 2, 3}
print(type(str({'a': 1, 'b': 2, 'c': 3})), str({'a': 1, 'b': 2, 'c': 3})) # <class 'str'> {'a': 1, 'b': 2, 'c': 3}
print(type(str(None)), str(None)) # <class 'str'> None
print(type(str(str)), str(str)) # <class 'str'> <class 'str'>
print(type(str(int)), str(int)) # <class 'str'> <class 'int'> 因?yàn)閕nt是關(guān)鍵字,用str(int)直接把類型的字符串打印出來(lái)了print("=====================================")print(type(int('11')), int('11')) # <class 'int'> 11
print(type(int(11.11)), int(11.11)) # <class 'int'> 11 精度丟失
print(type(int(11.55)), int(11.55)) # <class 'int'> 11,這么看來(lái),int()是直接截取小數(shù)點(diǎn)前面的數(shù)字而不是四舍五入
# print(type(int('11.11')), int('11.11')) # 報(bào)錯(cuò),因?yàn)閕nt()不能直接轉(zhuǎn)換浮點(diǎn)數(shù)字符串
print(type(int(True)), int(True)) # <class 'int'> 1
# print(type(int([1, 2, 3])), int([1, 2, 3])) # 報(bào)錯(cuò),因?yàn)閕nt()不能直接轉(zhuǎn)換listprint("=====================================")print(type(float('11.22')), float('11.22')) # <class 'float'> 11.22,int()不能直接轉(zhuǎn)換浮點(diǎn)數(shù)字符串,但是float()可以
print(type(float(11)), float(11)) # <class 'float'> 11.0
print(type(float(11.11)), float(11.11)) # <class 'float'> 11.11
print(type(float(True)), float(True)) # <class 'float'> 1.0
# print(type(float([1, 2, 3])), float([1, 2, 3])) # 報(bào)錯(cuò),因?yàn)閒loat()不能直接轉(zhuǎn)換list
標(biāo)識(shí)符
編程時(shí)給類、方法、變量等等取的名字稱為 標(biāo)識(shí)符
。
Python中的 標(biāo)識(shí)符命名規(guī)則
,包括內(nèi)容限定、大小寫敏感和不可使用關(guān)鍵字等三類規(guī)則。
其中,標(biāo)識(shí)符只允許出現(xiàn) 英文、中文、數(shù)字和下劃線 ,不能以數(shù)字開頭,關(guān)鍵字也不能使用。同時(shí),標(biāo)識(shí)符的命名要做到簡(jiǎn)明易懂,避免使用中文和特殊符號(hào)。
關(guān)鍵字:
運(yùn)算符
字符串拓展
- 定義方式
單引號(hào),雙引號(hào),三個(gè)雙引號(hào)(寫法同多行注釋,但是賦給一個(gè)接收的變量就是字符串) - 引號(hào)嵌套
- 字符串拼接
+
- 字符串格式化
name = "張三" # print("hello," + name + "很高興認(rèn)識(shí)你,我的電話是:" + 123456) # TypeError: can only concatenate str (not "int") to str # 不用 + ,用逗號(hào) print("hello," + name + ",很高興認(rèn)識(shí)你,我的電話是:", 123456, sep="") # hello,張三,很高興認(rèn)識(shí)你,我的電話是:123456 # 轉(zhuǎn)換成字符串 print("hello," + name + ",很高興認(rèn)識(shí)你,我的電話是:" + str(123456), sep="") # hello,張三,很高興認(rèn)識(shí)你,我的電話是:123456 # 占位符 %s 字符串 %d 整數(shù) %f 浮點(diǎn)數(shù) print("hello, %s,很高興認(rèn)識(shí)你,我的電話是:%d" % (name, 123456)) # hello, 張三, 我的電話是:123456 # 快速占位符f"{}",不能做精度控制,適合快速顯示 phone = 123456 print(f"hello, {name},很高興認(rèn)識(shí)你,我的電話是:{phone}") # hello, 張三, 我的電話是:123456 # {}中也可以放簡(jiǎn)單表達(dá)式 print(f"hello, {type('字符串')},很高興認(rèn)識(shí)你,我的電話是:{4 ** 4}") # hello, <class 'str'>,很高興認(rèn)識(shí)你,我的電話是:256
- 精度控制
num1 = 11 num2 = 11.49 print("11保留1位:{:.1f}".format(num1)) # 11.0 print("11.49保留1位:%.1f" % num2) # 11.5 四舍五入 print("11保留3位:{:.3f}".format(num1)) # 11.000 補(bǔ)0 print("11.49保留3位:%.3f" % num2) # 11.490 print("11寬度為5:{:5d}".format(num1)) # 11 右對(duì)齊,不足左邊補(bǔ)3個(gè)空格 print("11.49寬度為5,保留0位小數(shù),%5.0f" % num2) # 11(右對(duì)齊)(四舍五入) print("11.49寬度為12:%12f" % num2) # 11.490000(右對(duì)齊,算上小數(shù)點(diǎn)是9位,不足12位左邊補(bǔ)3個(gè)空格)(四舍五入) print("11寬度為9,保留1位:{:9.1f}".format(num1)) # 11.0(右對(duì)齊) print("11.49寬度為9,保留1位:%9.1f" % num2) # 11.5(右對(duì)齊)
- 表達(dá)式:即具有明確執(zhí)行結(jié)果的代碼語(yǔ)句
- 數(shù)據(jù)輸入
input
語(yǔ)句# 如果三次輸入的name一樣,那么這三個(gè)代碼輸出是一樣的 print("你是誰(shuí)?", end="") name = input() print("我知道了,你是%s" % name)name = input("你是誰(shuí)?") print(f"我知道了,你是{name}")print("我知道了,你是", input("你是誰(shuí)?"), sep="")
小結(jié)
今天到此為止。
內(nèi)容上,目前看了第一階段第一章,都是基礎(chǔ),32小時(shí)大概看了1/6的樣子。
難度上不得不說(shuō),一點(diǎn)都不難,當(dāng)然我有基礎(chǔ),但是沒基礎(chǔ)也一樣,比java好學(xué)太多了。
感想是看的真慢,別看看了六分之一,倍速看的也很久。其實(shí)最費(fèi)時(shí)間的不是看視頻,是跟著寫驗(yàn)證、雖然不驗(yàn)證我也知道什么情況,總歸寫了記得清楚點(diǎn)。還有費(fèi)時(shí)間的其實(shí)是這篇博客,真的是,哇,看一點(diǎn)記一點(diǎn),標(biāo)簽頁(yè)切來(lái)切去,csdn的MD編輯器……emm,我才發(fā)現(xiàn)可以隱藏預(yù)覽區(qū),那沒事了……