01.計算機基礎
計算機組成
- 硬體系統
- CPU:
- 計算機的運算和計算中心
- 相當于人類大腦
- 記憶體:
- 暫時存盤資料,臨時加載資料應用程式
- 4G,8G,16G,32G
- 速度快,高鐵,斷電即消失,造價很高
- 硬碟:
- 磁盤,長期存盤資料,
- D盤,E盤
- 存盤檔案,視頻,音頻等等
- 500G,1T
- 造價相對低,
- CPU:
- 軟體系統
- 作業系統:一個軟體,連接計算機的硬體與所有軟體之間的一個軟體,
- 應用軟體:QQ,微信,迅雷等
02.python簡介
python是什么
- 一門當前(2020年)非常流行的高級編程語言
- 20世紀90年代初Python語言誕生
- 作者是吉多·范羅蘇姆(Guido van Rossum)
- 之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是取自英國20世紀70年代首播的電視喜劇《蒙提·派森的飛行馬戲團》(Monty Python’s Flying Circus),
python能做什么
- web后端開發
- 自動化運維
- 自動化測驗
- 爬蟲
- 資料分析
- 人工智能
03.環境搭建
安裝python編譯器
- python:https://www.python.org/downloads/windows/
- anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
安裝python編輯器
- vscode:https://code.visualstudio.com/Download
安裝vscode常用插件
- python
- python開發插件
- chinese
- 中文漢化
- vscode-icons
- 圖示主題
- Bracket Pair Colorizer
- 代碼顏色高亮一般只會幫你區分不同的變數
- 這款插件給不同的括號換上了不同的顏色
- 括號的多的時候非常實用
- Settings Sync
- 這個插件可以實作同步你的vscode設定,包括setting檔案,插件設定等
- 不過你要先有github的賬戶,因為它利用了github的token功能
- 相當于把這樣檔案上傳到了你的github賬戶中
- Path Autocomplete
- 有時候程式需要讀取檔案,自己手動去復制檔案路徑還是比較麻煩的
- 有了這個插件就方便多了,它能自動感知當前目錄下所有的檔案,只需要你自己選擇就好了
- Remote Development
- vscode 的遠程開發支持,可以通過 ssh 連接遠程服務器,進行遠程開發,
- 同時集成了xshell 遠程終端 和 xftp 遠程檔案管理的功能,
- Code Spell Checker
- 單詞拼寫檢查,非常推薦
- 有時候會拼錯單詞,這個不僅可以指出錯誤,還能提供正確單詞的拼寫方式
- 安裝好之后,選中拼寫錯誤的單詞,旁邊出現黃色小燈泡
- 點擊選擇單詞,直接替換,
- Guides
- 提供縮進檢查,有時候for, if 寫多了,就分不清對應的列數
- VScode雖然自帶的有縮進檢查,但是不明顯
- 這個將縮進線顯示為紅色,非常醒目,
- SynthWave‘84
- 字體顏色主題
- koroFileHeader
- 檔案頭注釋(ctrl+alt+i)
- 和函式頭注釋(ctrl+alt+t)
- 一鍵生成頭注釋
- Better Comments
- 這個插件通過不同的彩色把不同功能的注釋資訊區分開來
- 能區分的功能有:Alerts、Queries、TODOs、Highlights和用戶自定義
- YAPF
- 輸入命令:pip install yapf,安裝yapf
- 然后在File->Preferences->Settings,輸入python.formatting.provider
- 然后選擇yapf,完成配置
- 在需要整理的Python代碼檔案中,使用快捷鍵:Alt+Shift+F,即可完成代碼整理作業
- Python Preview
- 能夠實時可視化你的代碼結果,
- Git Graph
- Git神器,堪比Pycharm內的Git管理器
- 通過這個擴展,可以清楚地看見當前分支的commit記錄和變化
- 可以通過按鈕的方式輕易地創建、切換分支、cherry pick、merge等操作
- 對比分支、查看未提交的修改…
- 還有許多可定制的擴展設定
- Python Snippets
- 很多時候,我們用到的代碼片段都是類似的,比如for回圈、try/catch等等
- 現在有了這個工具,我們只需要輸入命令生成代碼片段,然后再進行微調,就能完成功能的開發
- 此外,有些時候我們可能會忘記某些內置函式的用法,這個工具也能給你提供示例代碼做參考,而不用你再去搜索引擎搜索示例
- Django
- flask-snippets
- Visual Studio IntelliCode
- Bookmarks
- Error Lens
- File Utils
- GitLens
- indent-rainbow
- jumpy
- MetaGo
- Project Manager
- Quick and Simple Text Selection
04.配置pip國內源
常用國內源
http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 華中理工大學
http://pypi.sdutlinux.org/simple/ 山東理工大學
http://pypi.mirrors.ustc.edu.cn/simple/ 中國科學技術大學
https://pypi.tuna.tsinghua.edu.cn/simple 清華
基本使用
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
Linux配置pip源
# 進入根目錄
cd ~
# 創建檔案夾
mkdir .pip
# 進入目錄
cd .pip
# 編輯檔案pip.conf(會自動創建)
vim pip.conf
# 把下邊的復制進去(我用的清華的源,如果想配置其他源只需要改下邊的內容即可)
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
windows配置pip源
# 在windows檔案管理器中,輸入 %APPDATA%,然后回車,接下來會進入一個新的路徑
# 在該目錄下新建pip檔案夾,然后到pip檔案夾里面去新建個pip.ini檔案
# 把下邊的復制進去(我用的清華的源,如果想配置其他源只需要改下邊的內容即可)
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
05.變數和常量
what:概念
- 變數:
- 程式運行程序中,需要加載到記憶體中使用,可能會發生改變的資料的識別符號
- 程式運行程序中會發生改變的資料
- 常量:
- 程式運行程序中,不會發生改變的,需要加載到記憶體中使用的資料的識別符號
- 程式運行程序中不會發生改變的資料
- python中沒有自己的常量,實際上是全部大寫的變數
why:為什么使用
- 能夠記錄變化的值,幫助我們寫出優美的代碼
- 一個良好的程式離不開各種各樣的變數
where:在哪里使用
- 程式中充斥著各種各樣的變數和常量
- 只要撰寫代碼,一般都會用到變數
- 任何一個Python程式中都可以使用變數
when:什么時候使用
- 如果程式運行中某個值需要記錄,以便下次繼續使用,則使用變數保存
- 比如,記錄商品的價格,記錄人的姓名,年齡等
how:如何使用
- 變數的命名需要遵循識別符號的命令規則和規范
- 不能以數字開頭
- 不能是系統關鍵字
- 需要由有意義的英文單詞組成,不要包含一些沒有意義的特殊字符
- 下劃線命名法:
- 每個英文單詞都全小寫,由下劃線分割
- 一般用于命名變數
- 大駝峰命名法:
- 每個單詞的首字母都大寫
- 一般用于命名類名
- 全大寫命名法:
- 每個單詞全大寫,單詞之間用下劃線分割
- 一般用于命名常量
- 變數的命名方式:
變數名 = 值 - 舉例:
- 變數
name = '張大鵬'age = 22gender = '男'
- 常量
PI = 3.14159PERSON_ID = 100008199208293837
- 變數
06.注釋
what:是什么
- 程式中用來解釋說明代碼的文本描述
- 注釋不會被執行,只起到解釋說明代碼的作用
why:為什么使用
- 為了防止過一段時間后遺忘代碼的邏輯
- 為了方便別的程式員閱讀我們的代碼
where:在哪里使用
- 代碼邏輯比較復雜的時候使用
- 一個完整的代碼塊一般要配上一個注釋
when:什么時候使用
- 當你怕一段時間后遺忘代碼的邏輯的時候
- 當你想要別人能夠一眼就看出你的代碼做了什么的時候
how:怎么使用
- 單行注釋:
# 注釋內容 - 多行注釋:
""" 注釋內容 """
07.基本資料型別
what:是什么
- 數字型別:int,float
- 字串型別:str
- 布林值型別:bool
- 容器型別:list,tuple,dict,set
why:為什么使用
- 為了便于計算機理解我們的代碼內容
- 為了提高計算機的執行效率
where:在哪里使用
- 數字型別:通常用于涉及到數值型別資料傳輸和計算的時候
- 字串型別:通常用于輸入輸出的時候
- 布林值型別:通常用于需要判斷是否滿足條件的時候
- 容器型別:通常用于需要記錄多個相同或者相關型別資料的時候
when:什么時候使用
- 按需使用
- 如果是數值型別資料,就使用int或者float
- 如果是字串型別資料,就使用str
- 如果需要記錄真偽情況,就使用bool
how:怎么使用
- 使用整數:
age = 22 - 使用浮點數:
price = 33.33 - 使用字串:
name = '張大鵬' - 使用布林值:
flag = True
示例代碼:從控制臺輸入你的姓名,年齡,身高,然后列印成一句話輸出在控制臺
'''
Author: 張大鵬
Date: 2020-12-19 18:21:01
LastEditTime: 2020-12-19 18:22:55
LastEditors: Please set LastEditors
Description: 基本資料型別的使用
FilePath: \python_basic_20201219\hw01_basic_data_type.py
'''
# 需求:從控制臺輸入你的姓名,年齡,身高,然后列印成一句話輸出在控制臺
name = input('請輸入姓名:')
age = int(input('請輸入年齡: '))
height = float(input('請輸入身高:'))
print(f'您的姓名是{name},年齡是{age},身高是{height}')
輸出內容
請輸入姓名:張大鵬
請輸入年齡: 22
請輸入身高:165
您的姓名是張大鵬,年齡是22,身高是165.0
08.資料型別的基本運算
what:是什么
- 基本運算指的是加減乘除運算
why:為什么使用
- 基本運算是最常用最基礎的操作,必須掌握
where:在哪里使用
- 當程式中需要做一些基本運算的時候使用
when:什么時候使用
- 當數值型別需要做基本運算的時候
- 當字串需要做拼接或者重復的時候
- 布林值不建議做基本運算
how:怎么使用
- 數值型別做基本運算:
a = 10, b = 20- 加法:
result = a + b - 減法:
result = a - b - 乘法:
result = a * b - 除法:
result = a * b
- 加法:
- 字串做基本運算:
name1 = '張大鵬', name2 = '理想國真恵玩'- 拼接:
result = name2 + '-' + name1 - 重復:
result = '-' * 33
- 拼接:
練習1:假設你是超市收銀員,現在需要結賬,從控制臺錄入商品的單價,數量,折扣,計算應付金額
'''
Author: 張大鵬
Date: 2020-12-19 18:40:01
LastEditTime: 2020-12-19 18:42:24
LastEditors: Please set LastEditors
Description: 練習題1
FilePath: \python_basic_20201219\hw01_practice01.py
'''
# 假設你是超市收銀員,現在需要結賬,
# 從控制臺錄入商品的單價,數量,折扣,計算應付金額
price = float(input("請輸入商品單價: "))
good_num = int(input("請輸入購買數量: "))
good_discount = float(input("請輸入折扣:"))
result = price * good_num * good_discount
print(f"應付金額:{result}")
輸出結果
請輸入商品單價: 20
請輸入購買數量: 3
請輸入折扣:0.9
應付金額:54.0
練習2:模擬登陸,假設資料庫中存在用戶名’lxgzhw’和密碼’lxgzhw123456’,從控制臺錄入賬號和密碼,判斷是否正確,并列印兩條33個’-'組成的分割線,在分割線之間列印登錄是成功還是失敗
'''
Author: 張大鵬
Date: 2020-12-19 18:43:30
LastEditTime: 2020-12-19 18:46:23
LastEditors: Please set LastEditors
Description: 基本資料型別練習題2
FilePath: \python_basic_20201219\hw01_practice02.py
'''
# 模擬登陸,
# 假設資料庫中存在用戶名'lxgzhw'和密碼'lxgzhw123456'
database_username = 'lxgzhw'
database_password = 'lxgzhw123456'
# 從控制臺錄入賬號和密碼,判斷是否正確
username = input("請輸入用戶名:")
password = input("請輸入密碼:")
result = False # 默認不正確
if username == database_username and password == database_password:
result=True
# 并列印兩條33個'-'組成的分割線
# 在分割線之間列印登錄是成功還是失敗
print('-' * 33)
if result:
print("登錄成功")
else:
print("登錄失敗")
print('-' * 33)
輸出結果
請輸入用戶名:lxgzhw
請輸入密碼:lxgzhw123456
---------------------------------
登錄成功
---------------------------------
練習3:簡單加法計算器:讓用戶輸入第一個數和第二個數,計算兩個數的和然后輸出到控制臺
'''
Author: 張大鵬
Date: 2020-12-19 18:47:35
LastEditTime: 2020-12-19 18:49:04
LastEditors: Please set LastEditors
Description: 基本資料型別練習題3
FilePath: \python_basic_20201219\hw01_practice03.py
'''
# 簡單加法計算器
# 讓用戶輸入第一個數和第二個數
num1 = int(input("請輸入第一個數: "))
num2 = int(input("請輸入第二個數: "))
# 計算兩個數的和
result = num1 + num2
# 然后輸出到控制臺
print(f"{num1} + {num2} = {result}")
輸出結果
請輸入第一個數: 111
請輸入第二個數: 222
111 + 222 = 333
09.常用運算子
what:是什么
- 算術運算子:用于做數學運算的特殊識別符號
- 加法:
+ += - 減法:
- -= - 乘法:
* *= - 除法:
/ /= - 次冪:
** **= - 求余:
% %= - 整除:
// //=
- 加法:
- 條件運算子:用于做大小判斷的特殊識別符號
- 大于:
> - 小于:
< - 大于等于:
>= - 小于等于:
<= - 等于:
== - 不等于:
!=
- 大于:
- 邏輯運算子:用于連接多個條件運算式的特殊識別符號
- 與:
and - 或:
or - 非:
not
- 與:
why:為什么使用
- 運算子是最基本的,最常用的編程識別符號,必須熟練掌握
- 運算子遍布于每一個程式,學懂才能看懂別人的代碼
where:在哪里使用
- 在任何需要呼叫的地方都可以使用
when:什么時候使用
- 按需使用
- 算術運算子:用于計算,得到新的計算結果
- 條件運算子:用于判斷,得到布林值
- 邏輯運算子:連接多個判斷,得到的還是布林值
how:怎么使用
- 在實戰中使用
- 邊學邊練,邊練邊學
10.流程控制陳述句if
what:是什么
- 程式分支結構
- 根據不同的條件執行不同的代碼
why:為什么要使用
- 一般程式中都會頻繁的使用分支結構
- Python中就提供了if陳述句一種條件分支結構
- if陳述句是Python基礎中必須要掌握的一個知識點
where:在哪里使用
- if陳述句可以在程式的任何需要它的地方使用
- if陳述句可以嵌套,if陳述句的內部還可以使用if陳述句
- if陳述句可以在程式的頂層使用
- if陳述句可以在其他陳述句的內部使用,比如for,while,函式內部,類的內部
when:什么時候使用
- 當代碼需要根據某個條件執行結果的不同而執行不同代碼塊的時候使用
- 比如用戶名和密碼正確則執行登錄成功的代碼,否則執行登錄失敗的代碼
how:如何使用
- 單獨if
if 條件:
條件滿足執行的代碼
- if-else陳述句
if 條件:
條件滿足執行的代碼
else:
條件不滿足執行的代碼
- if-elif-else陳述句
if 條件1:
條件1滿足執行的代碼
elif 條件2:
條件2滿足執行的代碼
elif 條件3:
條件3滿足執行的代碼
...
else:
所有條件都不滿足執行的代碼
練習1:進網吧案例,讓用戶輸入年齡,如果年齡大于等于18歲,則列印"已成年,可以進網吧"
'''
Author: 張大鵬
Date: 2020-12-19 19:12:36
LastEditTime: 2020-12-19 19:13:29
LastEditors: Please set LastEditors
Description: if練習1
FilePath: \python_basic_20201219\hw02_practice01.py
'''
# 進網吧案例,讓用戶輸入年齡
age = int(input("請輸入年齡: "))
# 如果年齡大于等于18歲
# 則列印"已成年,可以進網吧"
if age >= 18:
print("已成年,可以進網吧")
輸出結果
請輸入年齡: 22
已成年,可以進網吧
練習2:頁面跳轉案例,讓用戶輸入自己的身份(1管理員,2普通用戶),如果是管理員則跳轉到后臺管理頁面,否則跳轉到普通用戶后臺頁面
'''
Author: 張大鵬
Date: 2020-12-19 19:14:24
LastEditTime: 2020-12-19 19:16:28
LastEditors: Please set LastEditors
Description: if練習2
FilePath: \python_basic_20201219\hw02_practice02.py
'''
# 頁面跳轉案例,
# 讓用戶輸入自己的身份(1管理員,2普通用戶)
profile = input("請輸入您的身份(1管理員,2普通用戶):")
is_admin = profile == '1'
# 如果是管理員則跳轉到后臺管理頁面
# 否則跳轉到普通用戶后臺頁面
if is_admin:
print("管理員:跳轉到后臺管理頁面")
else:
print("普通用戶:調整到普通用戶后臺頁面")
輸出結果
請輸入您的身份(1管理員,2普通用戶):1
管理員:跳轉到后臺管理頁面
練習3:判斷星期幾案例,讓用戶輸入一個數字,如果是1則列印星期一,2則列印星期二以此類推,如果大于7或者小于0則列印日期錯誤
'''
Author: 張大鵬
Date: 2020-12-19 19:17:31
LastEditTime: 2020-12-19 19:19:37
LastEditors: Please set LastEditors
Description: if練習3
FilePath: \python_basic_20201219\hw02_practice03.py
'''
# 判斷星期幾案例,
# 讓用戶輸入一個數字
week_day = int(input("請輸入今天是一周的第幾天:"))
# 如果是1則列印星期一,2則列印星期二以此類推,
if week_day == 1:
print("星期一")
elif week_day == 2:
print("星期二")
elif week_day == 3:
print("星期三")
elif week_day == 4:
print("星期四")
elif week_day == 5:
print("星期五")
elif week_day == 6:
print("星期六")
elif week_day == 7:
print("星期天")
# 如果大于7或者小于0則列印日期錯誤
else:
print("日期錯誤")
輸出結果
請輸入今天是一周的第幾天:3
星期三
練習4:判斷分數等級,某次考試總分100分,現在需要判斷成績所屬等級,小于60分為D,大于等于60小于80分為C,大于等于80分小于90分為C,大于等于90分小于等于100分為A,如果小于0或者大于100分則為錯誤的分數,寫程式,錄入一個分數,判斷對應的等級,
'''
Author: 張大鵬
Date: 2020-12-19 20:44:11
LastEditTime: 2020-12-19 20:46:49
LastEditors: Please set LastEditors
Description: if練習4
FilePath: \python_basic_20201219\hw03_practice04.py
'''
# 判斷分數等級,
# 某次考試總分100分,現在需要判斷成績所屬等級
# 小于60分為D,大于等于60小于80分為C
# 大于等于80分小于90分為C,大于等于90分小于等于100分為A
# 如果小于0或者大于100分則為錯誤的分數,
# 寫程式,錄入一個分數,判斷對應的等級,
score = int(input("請輸入分數:"))
if 90<=score<=100:
print("A")
elif 80<=score<90:
print("B")
elif 60<=score<80:
print("C")
elif 0<=score<60:
print("D")
else:
print("分數錯誤")
輸出結果
請輸入分數:55
D
11.嵌套的if
what:是什么
- if陳述句中嵌套使用if,叫做if嵌套
why:為什么使用
- 有時候我們需要做多重判斷
- 比如登錄:
- 我們先判斷驗證碼是否正確
- 如果驗證碼正確再接著判斷賬號密碼是否正確
where:在哪里使用
- 可以在程式任何需要嵌套if的地方使用
when:什么時候使用
- 當需要做多重判斷的時候使用
how:怎么使用
if 外部條件:
if 內部條件:
陳述句
練習1:模擬登陸,假設用戶名為’lxgzhw’,密碼為’lxgzhw123456’,驗證碼為’q5u7’,讓用戶輸入賬號密碼及驗證碼,校驗是否登錄成功
'''
Author: 張大鵬
Date: 2020-12-19 20:23:47
LastEditTime: 2020-12-19 20:29:30
LastEditors: Please set LastEditors
Description: if嵌套練習1
FilePath: \python_basic_20201219\hw03_practice01.py
'''
# 模擬登陸,
# 假設用戶名為'lxgzhw',密碼為'lxgzhw123456'
# 驗證碼為'q5u7'
data_username = 'lxgzhw'
data_password = 'lxgzhw123456'
session_captcha = 'q5u7'
# 讓用戶輸入賬號密碼及驗證碼
# 校驗是否登錄成功
username = input("請輸入用戶名:")
password = input("請輸入密碼:")
captcha = input(f"請輸入驗證碼({session_captcha}):")
if captcha == session_captcha:
if username==data_username and password == data_password:
print(f"登錄成功,歡迎您:{username}")
else:
print("登錄失敗,用戶名或密碼錯誤")
else:
print("驗證碼錯誤,請檢查后重新輸入")
輸出結果
請輸入用戶名:lxgzhw
請輸入密碼:lxgzhw123456
請輸入驗證碼(q5u7):q5u7
登錄成功,歡迎您:lxgzhw
練習2:淘寶購物案例,假設某品牌衣服230元一件,某用戶一下子購買了100件,先判斷支付密碼是否正確(假設支付密碼為123456),再判斷余額是否充足(假設余額為13000元),向控制臺輸出購買成功還是失敗,如果失敗,請說明失敗原因,
'''
Author: 張大鵬
Date: 2020-12-19 20:30:56
LastEditTime: 2020-12-19 20:35:04
LastEditors: Please set LastEditors
Description: if嵌套練習2
FilePath: \python_basic_20201219\hw03_practice02.py
'''
# 淘寶購物案例,
# 假設某品牌衣服230元一件
cloth_price = 230
# 某用戶一下子購買了100件
shop_num = 100
# 先判斷支付密碼是否正確(假設支付密碼為123456)
# 再判斷余額是否充足(假設余額為13000元)
# 向控制臺輸出購買成功還是失敗
# 如果失敗,請說明失敗原因
need_pay = cloth_price * shop_num
print(f"下單成功,應付金額{need_pay}元")
if input("請輸入支付密碼:") == '123456':
if need_pay < 13000:
print("支付成功")
else:
print("余額不足,交易失敗")
else:
print("支付密碼錯誤,請重新輸入")
輸出結果
下單成功,應付金額23000元
請輸入支付密碼:123456
余額不足,交易失敗
練習3:網站爬蟲案例,爬蟲一般都是需要一個固定網址,該網址可以訪問才能夠正常爬取,需要訪問該網址,則需要聯網,假設某網址為"http://lxgzhwtest.com",能夠正常訪問,但是現在電腦沒有聯網,寫一段代碼,模擬爬蟲程式,判斷能否正常運行,如果不能正常運行,請說明原因,
'''
Author: 張大鵬
Date: 2020-12-19 20:36:05
LastEditTime: 2020-12-19 20:38:56
LastEditors: Please set LastEditors
Description: if嵌套練習3
FilePath: \python_basic_20201219\hw03_practice03.py
'''
# 網站爬蟲案例,
# 爬蟲一般都是需要一個固定網址
# 該網址可以訪問才能夠正常爬取
# 需要訪問該網址,則需要聯網
# 假設某網址為"http://lxgzhwtest.com",能夠正常訪問
url = "http://lxgzhwtest.com"
is_exists = True
# 但是現在電腦沒有聯網
is_connect = False
# 寫一段代碼,模擬爬蟲程式,判斷能否正常運行
# 如果不能正常運行,請說明原因
print("開始運行爬蟲,,,")
if is_exists:
print("網址存在,可以正常訪問")
if is_connect:
print("能過正常聯網,爬蟲正常運行")
else:
print("訪問失敗,請檢查網路連接")
else:
print("網頁不存在,404錯誤")
輸出結果
開始運行爬蟲,,,
網址存在,可以正常訪問
訪問失敗,請檢查網路連接
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237648.html
標籤:python
上一篇:tenacity.retry Python中一個專門用來重試的庫
下一篇:Python爬蟲實戰
