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