程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python基礎篇

編輯:Python

歡迎來到
魔術之家!!

Python輕松上手

    • 編寫第一個python.py
    • 固定數據介紹.py
    • 列表的性質以及增刪改查.py
    • 小小的任務:求sinx曲線圖形面積.py
    • 常用操作符.py
    • 條件判斷語句.py
    • 字符串索引&切片&增刪改查
    • 對文件處理操作
    • 統計小說的單詞詞頻
    • 用戶函數自定義
    • python方法與函數對比
    • 面對對象實例
    • python模塊

更新時間 2022.5.13

該篇講解以代碼和結果結合,能夠快速上手python基礎用法
0積分獲取源碼:傳送門
文本資源目錄如下:

編寫第一個python.py

源碼:

# python中變量不需要聲明 但必須賦值 賦值後才能創建 
# 所以也有人把變量稱為名字
# python 的輸出代碼
print('hello world') # hello world yyds
魔術師 = 666 # 因為python使用 utf-8編碼所以可以用中文
print(魔術師) # 輸出變量
print("Majician",魔術師)# 同時輸出字符和變量 
#進階知識
print("Majiciam", 魔術師真酷, end='!') # 設置結尾
print("Majiciam", 魔術師真酷, sep='-', end='!') # 設置 間隔

結果:

>>>print('hello world') # hello world yyds
hello world
>>>魔術師真酷 = 666 # 因為python使用 utf-8編碼所以可以用中文
>>>print(魔術師真酷) # 輸出變量
666
>>>print("Majician", 魔術師真酷) # 同時輸出字符和變量
Majician 666
>>>print("Majiciam", 魔術師真酷, end='!')
Majiciam 666!
>>> print("Majiciam", 魔術師真酷, sep='-',end='!')
Majiciam-666!

固定數據介紹.py

# 如何用python中的數據結構/數據表示和存放數據
# 標准數據類型 = 【
# ”Number(數字):[’int.float,bool,complex(復數)'],
# “String(字符串)”,
# “list(列表)”,
# “Dictionary:字典”,
# “Set:(集合)”,
# “Tuple:(元組)"
# 】
import math
a = -3.5
b = abs(a) # absolute value
print(b)
c = math.sin(b)
print(c)

列表的性質以及增刪改查.py

# 列表(List)
all_in_list = [
1,
'love',
True,
[1, 2, 3]
]
# 列表每個元素都是可變的,
# 列表中每個元素都是有序的,
# 列表可以容納Python所有對象
print(all_in_list)
index = all_in_list[1]
index = all_in_list[-3]
index = all_in_list[0:2] # 列表的切片,顧頭不顧尾,只有1到2,不包括2,
print(index)
# 列表的增刪改查
all_in_list.append("hello world") # 附加最後一個元素
all_in_list.insert(0, "pre_hello") # 插入元素
print(all_in_list)
all_in_list.remove("hello world") # 刪除指定元素
print(all_in_list)
del all_in_list[:2] # 刪除元素
print(all_in_list)
all_in_list[0] = 100
print(all_in_list)
#for循環 #效率底 所以使用列表推導式
x = []
for i in range(10):
x.append(i)
#print(x)
#列表推導式
x = [i for i in range(3,10)]
y = [i**2 for i in range(3,10)]
z = [i**2 for i in range(3,10) if i%2==0] #輸出偶數項
print(x)
print(y)

小小的任務:求sinx曲線圖形面積.py

import math
n = 10
x = []
y = []
width = 2 * math.pi / n
# 方法一:for循環建立核心數據結構
for i in range(n):
x.append(i * width)
y.append(abs(math.sin(x[i]))) # 絕對值
sums = sum(y) * width # 求和函數
# 列表推導式建立核心數據結構(盡量不用for循環,時間復雜度高)
x = [i * width for i in range(n)]
y = [abs(math.sin(i * width)) for i in range(n)]
z = [abs(math.sin(i * width)) * width for i in range(n)]
sums = sum(z)
print(x)
print(y)
print(sums)

常用操作符.py

# python 操作符 大多與C語言類似
# 賦值 關系 運算 邏輯 等 (也是返回一個值)
# 邏輯
res = 1 < 2 < 3 # 不同時可以連續比較 猜測其在對 < > 進行重載 沒有參數返回Boll型數據,又參數返回類繼續比較
res = 'M' in 'Magic' # 判斷是否在裡面
print(res)

條件判斷語句.py

# 只有 if elif else while 沒有switch了
# 條件判定語句 if 後面語句可以不用加()
if 1 < 2:
print('hello')
if 1 < 0:
print('hello')
else:
print("world")
if 1 < 0:
print('hello')
elif 1 < -1:
print("world")
else:
print("!")
# 冒泡排序法
x = [1, 2, 3, 4, 123, 1, 64, 1, -2]
n = len(x)
for i in range(n): # 循環次數更多,時間復雜度更高
for j in range(i): # 保證在循環中x[i]值最大,前面小於的不管他,一旦有一個x[j]>x[i] j+1後面也全大於 x[j] 和x[i]一直調換
if x[j] > x[i]: # 調換方法!!!
x[i], x[j] = x[j], x[i]
print(n)
print(x)

字符串索引&切片&增刪改查

# 字符串
# 任何在這雙引號的文字
# 單引號其實和雙引號完全一樣,但在開發時建議引入用單引號,
# '''三個引號被用於長段文字或說明,只要引號不結束,你就可以任意換行'''
# 字符串為不可變數據類型
string = "字符串"
string = '''hello 嘿嘿 world'''
string = 'my ,name'
print(string)
# 字符串基本用法,
# 拼接 char1 + char2 + char3,
# 重復 'word'*3,
# 轉換 int(string),
# 切片與索引:
# str[-3],
# str[1:4],
# str[3:]
res = string[1] # 字符串索引
res = string[1:4] # 字符串索引
res = string * 3
res = string + ' is '
# 字符串自身屬性
# 分割
res = string.split(sep=',')
# 默認按照空格切割開,可以設置separate設置隔開符
# 返回值是一個列表,
#注意!!!!:string是不可變的數據類型,不能對其數據進行改動, 除非對名字重新賦值
print(1,string)
string[1] = 'y' #報錯!!
#小寫變大寫
res = string.upper()
print(res)

字典的創建 索引&增刪改查

# 字典 大括號 ,列表 中括號
dictionary = {

'BIDU': 'baidu',
'SINA': 'sina',
'YOKU': 'youku',
}
# 鍵 - 值 成對出現;
# 鍵不能重復,
# 鍵不可更改,值可修改!!!!! 字符串也是 列表則可以
# 鍵來索引值
dic = {
'h': 'hello', 0.5: [0.3, 0.5], 'w': 'world'}
# dic = {'h': 'hello', 0.5: [0.3, 0.5], 'w': 'world',[2]:2}
# 不能以列表為鍵!!前提是因為鍵是不可以變得,而序列是可以變的
print(dic)
demo = dic['h']
demo = dic[0.5] # 字典中的元素無先後順序,只能用鍵來索引
print(demo)
# 字典的增刪改查
# 修改
dic['h'] = 'hi'
# 增加
# 單個
dic['new'] = 'new dic' # 如果沒有該鍵,會在字典末尾生成新的鍵值對
# 多個
dic.update({
1: 2, 3: 4})
# 刪除
# del dic #直接整個刪掉
del dic['h']
# 字典推導式
d = {
i: i ** 2 for i in range(10)}
d = {
i: i ** 2 for i in range(10) if i % 2 == 0}
print(dic)
print(d)

對文件處理操作

# 文件操作
# 只讀
f = open('beauty_live.text', 'r')
# 讀取文件操作
txt = f.read()
txt = f.read(100) #設置讀取字符的個數
# 因為是對文件以讀的方式打開,
# 所以在讀取文件指針後,
# 指向文件的指針指向文件尾,就無法再繼續讀取,需要將指針seek變為0
f.seek(0)
# 只讀行(返回值是一個列表)
txt1 = f.readlines()
# txt1 = f.readline() #只讀一行
f.close()
# print(txt1)
print(txt)

統計小說的單詞詞頻

# 統計小說的單詞頻次
import re
# 查看當前路徑
import os
path = os.getcwd() # current word directory 當前目錄
print(path)
f = open('beauty_live.text', 'r') # 引入當前工程路徑 , 如果移動了 需要絕對路徑
txt = f.read() # 讀取進來的數據類型是字符串
f.close()
txt = txt.lower()
# 去除小數點等符號 用‘’替代 就是空
re.sub('[,.?!"\'-]', '', txt)
# 由於使用分割後返回值是一個列表 無法使用re.sub 所以先處理在分割
txt = txt.split()
# 統計頻次
word = {
}
for i in txt:
if i not in word:
word[i] = 1
else:
word[i] += 1
# 對次數排序
sor = sorted(word.items(), key=lambda x: x[1], reverse=True)
print(txt)
print(word)
print(sor)

用戶函數自定義

# 函數自定義
# 簡單用lamdba
y = lambda x: x ** 2
y1 = lambda x: x[1]
# 復雜用def
def Sum(x=1, y=2): # 設置默認值同於c++,前面設置了後面必須避免歧義,可以只設置後面
return x + y
res = Sum()
demo = y(3)
demo = y1(['hello', 'world'])
print(res)
print(demo)
#求給定序列 偶數個數
def su(x):
z = 0
for i in x:
if i%2==0:
z +=1
return z
print(su([1,2,34,5,6,2,4,]))

python方法與函數對比

# 面對對象編程
list = [2.4, 'hello', 'world']
list.append('hehe')
print(list)
string = 'myapp'
string.append('hi') # 對字符串對象而言 沒有append方法 ,注意不是函數
list.split() # 同樣不可以對列表對象 使用split方法 方法與對象掛鉤
print(string)

面對對象實例

# 創建自己的類
class human: # 方法是定義在類內的函數
def __init__(self, ag=None, se=None):
self.age = ag # 類的屬性
self.sex = se
def square(self, x): # 方法
return x ** 2
zhangfei = human(ag=28, se='M') # 類的實例化
demo = zhangfei.square(3)
demo = zhangfei.age
print(demo)

python模塊

# 模塊是一個包含了所有你定義的函數的變量的文件,其後綴名為.py其實就是一個腳本文件
import math # 引入模塊
import def_math
from def_math import Sum
res = math.sin(1) # 用模塊調用
res = math.pi
from math import sin, pi # 從模塊引入變量和函數 直接使用 面對多次使用的情況下,建議用此方法 !
# 導入模塊全部變量和函數
from def_math import * # 不建議這樣做 把全部引入 沒有庫名稱區別 與其他庫的函數名歧義
res = sin(2) # 在模塊引入直接使用
res = 2 * pi
res = def_math.Sum(1, 3)
res = Sum(1, 3)
print(res)

模塊def_math.py

def Sum(x, y):
return x + y

整套資源下載:
傳送門在這!!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved