入門學習python
pep8中文下載(代碼官方格式)
運算符:+ - * / (加減乘除)
// 取整除 % 取餘數 ** 乘方
pycharm的快捷鍵:
Ctrl + / 批量註釋
Ctrl + z 撤銷
選中一片代碼,按tab鍵,可以批量縮進,按shift + tab鍵可以取消縮進
一行過長的語句可以使用反斜槓或者括號分解成幾行,不妨試試:
1. >>> 3 > 4 and \
2. 1 < 2
複製代碼
或者
1. >>> ( 3 > 4 and
2. 1 < 2 )
複製代碼
註釋:(1)、單行註釋 #
(2)、多行註釋
”””
”””
變量類型(數據類型):
注意:Python定義變量時不需要指定類型,Python會根據 = 右側的值自動推導變量類型
數字型
數字型可以直接進行四折運算
int: 整形,即整數類型
bool: 布爾類型,表示true(非零)或者false(0)
float: 浮點型,表示有小數點的數字
complex:複數型,用於科學計算
非數字型
字符串:str : 字符串類型,表示文字等,命名時必須使用” ”
字符串可以進行相加運算“” + “”
字符串可以與整數進行相乘 “” * int
列表
元組
字典
查看變量類型: type(name)
函數
Input實現鍵盤輸入
Input :輸入的數據類型是str類型的變量
表達格式:字符串變量 = input(“提示信息:”)
類型轉換函數
Int(x) 可以把x字符串轉化爲整數
float(x) 可以把x字符串轉化爲浮點數
price =float(input("蘋果單價:"))
weight = float(input("蘋果重量:"))
money = price *weight
print(money)
變量的格式化輸出
% 爲格式化操作符,專門處理字符串的格式
%s 字符串
%d 整數,%06d表示輸出的整數顯示位數,不足的地方使用0補全 (數字6可以修改)
%f 浮點數, %.02f表示顯示小數點後兩位 (數字2可以修改)
%% 輸出%
price = float(input("請輸入蘋果單價:"))
weight = float(input("請輸入蘋果重量:"))
money = price * weight
print('蘋果單價%.01f,購買了%.02f,需要支付%.02f元'%(price,weight,money))
# 百分號的輸出例子
scale = 0.25
print("數據比例是%.2f%%" % (scale * 100))
# 此處有兩個格式化變量依次爲25 % ,
# 所以要依次輸出兩個變量 %.2f 先顯示出數字,
# 然後%% 顯示出%,後面括號裏的變量 * 100 是因爲去掉%的除號作用
變量命名
標識符(只能用數字字母 下劃線組成,而且不能以數字開頭),標識符就是變量名
關鍵字:py內部的標識符,具有特殊功能
查看關鍵字:import keyword
>>> print(keyword.kwlist)
關鍵字如下
['False', 'None', 'True', 'and', 'as','assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except','finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda','nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with','yield']
變量命名規則:
1、 區分大小寫
2、 如果變量有多個單詞組成時各個單詞都使用小寫,單詞之間用 _ 下劃線連接,
如qq_number
判斷語句(if)又稱分支語句
格式:
# 定義一個整數變量記錄年齡
age = 18
# 判斷是否滿18
if age >= 18:
# 入果滿了18歲,就可以進網吧嗨皮
print("你已經成年,歡迎進網吧嗨皮")
比較運算符:
== 檢查兩邊是否相等,如果是返回True
!= 檢查兩個操作數的值是否相等,如果是,這條件成立,返回True
> < >= <=
縮進:
If語句以及縮進部分是一個完整的代碼塊 (如果有多個縮進,都屬於if語句的管理)
如果沒有縮進則跳出來if語句的管理
# 定義一個整數變量記錄年齡
age = 15
# 判斷是否滿18
if age >= 18:
# 入果滿了18歲,就可以進網吧嗨皮
print("你已經成年,歡迎進網吧嗨皮")
print("歡迎歡迎")
print("遊戲結束")
else的格式:
if 要判斷的條件:
條件成立時,要做的事情
…
else:
條件不成立時,要做的事情
…
# 定義一個整數變量記錄年齡
age = int(input("今年多大?"))
# 判斷是否滿18
if age >= 18:
# 入果滿了18歲,就可以進網吧嗨皮
print("你已經成年,歡迎進網吧嗨皮")
print("歡迎歡迎")
else:
print("你還沒長大,回家寫作業")
print("趕緊離開")
# 這句代碼無論條件是否成立都會執行
print("遊戲結束")
邏輯運算:
邏輯運算符:(and or not)可以把多個條件按照邏輯進行連接,變成更復雜的條件。
and 運算符:與/並且,當兩個條件同時滿足,返回true。只要有一個不滿足就返回false
or 運算符:或/或者,兩個條件只要有一個成立,返回true。兩個條件都不滿足,返回false
not 運算符:取反。not + 條件。 非/不是,
if進階:elif
holiday_name = "平安夜"
if holiday_name == "情人節":
print("買玫瑰")
print("看電影")
elif holiday_name == "平安夜":
print("買蘋果")
print("吃大餐")
elif holiday_name == "生日":
print("買蛋糕")
else:
print("每天都是節日")
if的嵌套
elif的應用場景是:同時判斷多個條件,所有條件是平級的
if的嵌套是一個條件進行判斷的前提是,前一個條件成立。
語法格式
has_ticket = True
knife_length = 10
if has_ticket:
print("車票檢查通過,準備開始安檢")
if knife_length> 20:
print("你攜帶的刀太長,有%d釐米" % knife_length)
print("不允許上車")
else:
print("安檢通過,祝你旅途愉快!")
else:
print("大哥,請先買票")
隨機數的生成
要使用工具包,首先要導入工具包(產生隨機數的工具包) 導入工具包時應該放在所有代碼頂部,方便後面程序的讀取
import random
導入後再輸入random. 然後再按tab鍵,彈出多個函數進行選擇。
randint是產生隨機整數
例如:random.randint(12,20) # 會生成隨機數n:12 <= n<= 20
下限必須小於上限
程序三大流程:
順序:從上到下,順序執行代碼
分支:根據條件判斷,決定執行代碼的分支 (if)
循環:讓特定代碼重複執行
循環
# 打印五遍 hollo python
# 定義一個整數變量,記錄循環次數
i = 1
# 開始循環
while i <= 5:
# 1> 希望在循環內執行的代碼
print("hellopython")
# 2> 處理計數器
i = i + 1
死循環產生原因:計數器沒有添加
賦值運算符:
= 賦值
+= 加法賦值
-=
*=
/=
//= 取整賦值
%= 取餘賦值
**= 冪賦值
程序計數方法
# 打印五遍 hollo python
# 定義一個整數變量,記錄循環次數
i = 0
# 開始循環
while i < 3:
# 1> 希望在循環內執行的代碼
print("hellopython")
# 2> 處理計數器
#i = i + 1
i += 1
print("循環結束,輸出%d" % i)
循環計算
# 計算1-100 的累加求和結果
# 定義一個整型變量記錄循環次數
i = 0
# 定義最終結果變量
result = 0
# 開始循環
while i <= 100:
# print(i)
# 每一次循環,都讓result和i這個計數器相加
result += i
# 處理計數器
i += 1
print("0-100相加結果是%d" %result)
0-100偶數相加
# 計算0-100之間所有偶數求和結果
# 開發步驟
#
# 1、編寫循環 確認要處理的數字
# 2添加結果變量,在內部處理計算結果
# 定義一個記錄最終結果的變量
result = 0
# 準備循環
i = 0
while i <= 100:
#判斷變量i中的數值是否是偶數
if i % 2 == 0:
print(i)
result += i
i += 1
print("輸出結果%d" % result)
break 與cotinue
i = 0
while i < 10:
#continue 某條件滿足時,不執行後續代碼,其餘條件滿足時,繼續執行後續代碼
# i == 3
if i == 3:
# 注意:在循環中,如果使用continue這個關鍵字
# 在使用之前,需要確認循環的計數是否修改,
# 否則可能造成死循環
i += 1
continue
print(i)
i += 1
while循環嵌套
畫小星星
# 打印連續五行*,每行*依次遞增
#*
#**
#***
#****
#*****
# 1、定義一個計數器變量,從數字一開始,循環比較方便
row = 1
# 2開始循環
while row <= 5:
print("*" *row)
row += 1
print函數的一個增強:
默認情況下,print函數輸出內容時,會在末尾增加換行
如果不希望在末尾增加換行,可以在print函數輸出內容後面增加 ,end=””
其中””中間可以指定print函數輸入內容後,繼續希望顯示的內容
# 在默認情況下,print函數輸出內容後,會自動在內容末尾增加換行
print("*", end="da")
print("*")
while循環嵌套
# 需求:
# 連續輸入五行小星星*,而且每行比前一行多一個*
# 開發步驟
# 1> 完成五行內容的輸出
# 2> 分析每行內部 * 應該如何處理
row = 1
while row <= 5:
# 每一行打印的星星與行數相同
# 增加一個小的循環,專門負責當前行中,每一列的星星顯示
# 定義一個列的計數器變量
col = 1 # 列
#開始循環
while col <= row:
#print("%d" %col)
print("*", end="")
col += 1
#print("第 %d 行" %row)
#這行代碼的目的,就是在一行星星輸出後,在末尾增加換行
print("")
row += 1
打印九九乘法表: (由打印小星星演變而來)
# 打印九行小星星
row = 1
while row <= 9:
col = 1
while col <= row:
#print("*",end="")
print("%d * %d =%d" % (col, row, col * row), end=" ")
col += 1
#print("%d" %row)
print("")
row += 1
修改後,打印結果對齊了
# 打印九行小星星
row = 1
while row <= 9:
col = 1
while col <= row:
#print("*",end="")
# \t 在控制檯輸出一個製表符,協助在輸出文本時垂直方向保持對齊
print("%d * %d =%d" % (col, row, col * row), end="\t")
col += 1
#print("%d" %row)
print("")
row += 1
字符串中的轉義字符
\t 在控制檯輸出一個製表符,協助在輸出文本時垂直方向保持對齊
製表符的功能是在不使用表格的情況下在垂直方向按列對齊文本
\n 在控制檯輸出一個換行符
# \t 在控制檯輸出一個製表符,協助在輸出文本時垂直方向保持對齊
print("1\t2\t3")
print("10\t20\t30")
# \n 在控制檯輸出一個換行符
print("hello\n python")
# 一個\可以使"單獨輸出來
print("hello\"hello")
函數:
定義格式:
def 函數名():
函數封裝的代碼
。。。
def multiple_table():
# 打印九行小星星
函數調用:
直接通過輸入 函數名() 即可完成調用
# 注意:定義好函數後,只表示這個函數封裝了一段代碼而已
# 如果不主動調用函數,函數是不會主動執行的
def say_hello():
print("hello1")
print("hello2")
print("hello3")
say_hello()
函數調試:(debug)
f8: 對一般的代碼進行調試
f7: 對封裝好的函數內部進行調試(使用f8不能對函數內部進行調試)
函數參數的使用
在函數名後面的小括號內填寫參數
多個參數之間用, 分隔
def sum_2_num(num1, num2):
"""對兩個數字的求和"""
result = num1 +num2
print("%d + %d =%d " %(num1, num2, result))
sum_2_num(20, 30)
形參和實參
形參:定義函數時,小括號中的參數,用來接收參數用的,在函數內部作爲變量使用
實參:調用函數時,小括號內的參數,是用來把數據傳遞到函數內部的
實例:如上一頁的num1 num2就是形參,20 30就是實參
函數的返回值:
(使用return進行返回函數計算結果,函數外部使用一個變量對return返回值進行接收)
def sum_2_num(num1, num2):
"""對兩個數字的求和"""
result = num1 +num2
return result
# 可以使用變量來接收函數執行的返回結果
sum_result = sum_2_num(20, 30)
print("計算結果:%d" % sum_result)
注意:return 表示返回,後續的代碼都不會被執行
函數的嵌套調用:
一個函數裏邊又調用另外一個函數
def test1():
print("*" * 50)
def test2():
print("-" * 50)
# 函數的嵌套調用
test1()
print("+" * 50)
test2()
打印多條分隔線
def print_line(char, times):
print(char * times)
# print_line("*", 20)
def print_lines():
i = 0
while i < 5:
print_line("-", 20)
i += 1
print_lines()
使用模塊(工具包)中的函數
以py擴展名結尾的Python文件就是一個模塊
使用import導入,導入後,就可以使用 模塊.變量/模塊.函數的方式,使用這個模塊中定義的變量或函數
高級變量
列表(list):
使用一個變量儲存多個數據,列表用[]定義,數據之間使用,分隔
列表的索引從0 開始
列表基本使用:
name_list = ["張三", "李四", "王五"]
# 1.取值於取索引
print(name_list[0])
# 知道數據內容,想確定數據在列表位置,使用index取出索引
print(name_list.index("李四"))
# 2.修改
name_list[1] = "大傻逼"
# 3.增加
# append方法可以向列表末尾追加數據
name_list.append("王小二")
# insert 方法可以在列表的指定索引位置插入數據
name_list.insert(1, "小美眉")
# extend 方法可以把其他列表中的完整內容,追加到當前列表末尾
temp_list = ["孫悟空", "豬八戒", "沙師弟"]
name_list.extend(temp_list)
# 4.刪除
# remove 方法可以從列表中刪除指定數據
name_list.remove("王五")
# pop方法默認可以把列表中最後一個元素刪除
name_list.pop()
# pop可以指定要刪除元素的索引
name_list.pop(3)
# clear 方法可以清空列表
name_list.clear()
print(name_list)
del關鍵字:
name_list = ["張三", "李四", "王五"]
# 使用del關鍵字(delete)刪除列表元素
del name_list[1]
# del 關鍵字本質上是用來將一個變量從內存中刪除,因爲del了name變量,所以會報錯
name = "小明"
del name
print(name)
print(name_list)
列表數據的統計:
name_list = ["張三", "李四", "王五", "張三"]
# len (length長度)函數可以統計列表中的元素總數
list_len = len(name_list)
print("列表中包含 %d 個元素" % list_len)
# count 方法可以統計列表中某一個數據出現的次數
count = name_list.count("張三")
print("張三出現了 %d 次" % count)
列表的排序:
name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [6, 8, 4, 1, 10]
# # 升序
# name_list.sort()
# num_list.sort()
# # 降序
# name_list.sort(reverse=True)
# num_list.sort(reverse=True)
# #反轉
# name_list.reverse()
# num_list.reverse()
print(name_list)
print(num_list)
Python關鍵字與函數:
關鍵字:在終端中輸入:
>>> import keyword
>>> print(keyword.kwlist)
循環遍歷(for):
name_list = ["張三", "李四", "王五", "王小二"]
# 使用迭代遍歷列表
"""
順序的從列表中以此獲取數據,每一次循環過程中,數據都會依次保存在
my_name 這個變量中,在循環體內部可以訪問到當前這一次獲取到的數據
for my_name in 列表變量:
print("我的名字叫 %s" %my_name)
"""
for my_name in name_list:
print("我的名字叫 %s" % my_name)
元組(tuple):
與列表相似,但元組使用()定義,數據之間用,分隔,,元組一旦定義就不可以修改,索引也是從0 開始
元組的常用操作:在終端中定義一個元組,例如,info = ()
輸入info. 按下tab鍵,就會彈出元組能夠使用的函數
info_tuple = ("小明", 18, 1.85)
# 格式化字符串後面的‘()’本質上就是元組
print("%s年齡是%d,身高是%.2f" % ("小明", 18, 1.85))
print("%s年齡是%d,今年%.2f" % info_tuple)
# 本質上就是一個字符串
info_str = "%s年齡是%d,今年%.2f" % info_tuple
print(info_str)
元組與列表之間的轉換:
使用list函數可以把元組轉換成列表
list(元組)
使用tuple函數可以把列表轉換成元組
tuple(列表)
字典:(與矩陣有點像)
一般字典用於存儲描述一個物體的相關信息
字典用{}定義,字典使用鍵值對儲存數據,鍵值對之間使用,分隔
鍵 key 是索引
值 value 是數據
鍵和值之間使用:分隔
鍵必須是唯一的
值可以取任何數據類型,但鍵只能使用字符串、數字、或元組
# 字典是一個無序的數據集合,使用print函數輸出字典是,通常
# 輸出結果的順序與定義的順序是不一致的!
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75,
"weight": 75.5}
print(xiaoming)
xiaoming_dict = {"name": "小明"}
# 1.取值
print(xiaoming_dict["name"])
# 2.增加/修改
# 如果key不存在,就會新增鍵值對
xiaoming_dict["age"] = 18
# 如果不存在,就會修改已經存在的鍵值對
xiaoming_dict["name"] = ["小小明"]
# 3.刪除
xiaoming_dict.pop("name")
print(xiaoming_dict)
字典的遍歷:
xiaoming_dict = {"name": "小明",
"qq": "123456",
"phone": "10086"}
# 迭代遍歷字典
# 變量k是每一次循環中,獲取到的鍵值對的key
for k in xiaoming_dict:
print("%s -%s" % (k, xiaoming_dict[k]))
字典應用場景:
# 將多個字典放在一個列表中,在進行遍歷,
# 在循環體內部針對每一個字典進行相同的操作
card_list = [
{"name": "張三",
"qq": "123456",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]
for card_info in card_list:
print(card_info)
字符串操作:(字符串操作巨多)
hello_str = "hello hello"
# 1.統計字符串長度
print(len(hello_str))
# 2.統計某一個小(子)字符串出現的次數
print(hello_str.count("llo"))
# 2.某一個子字符串出現的次位置
print(hello_str.index("llo"))
字符串查找與替換:
hello_str = "hello world"
# 1、判斷是否以指定字符串開始
print(hello_str.startswith("hello"))
# 2、判斷是否是以指定字符串結束
print(hello_str.endswith("world"))
# 3、查找指定字符串
print(hello_str.find("llo"))
# 替換字符串
# replace 方法執行完成後,會返回一個新的字符串
# 注意:不會修改原有字符串內容
print(hello_str.replace("world", "python"))
print(hello_str)
文本對齊:
# 要求:順序並且居中對齊輸出以下內容
poem = ["\t\n登黃鶴樓",
"王煥之",
"白日依山盡\t\n",
"黃河入海流", "欲窮千里目", "更上一層樓"]
for poem_str in poem:
# 先使用strip方法去除字符串中的空白字符
# 在使用center方法居中顯示文本
print("|%s|" %poem_str.center(10, " ")) # 居中
# print("|%s|" %poem_str.strip().center(10, " ")) # 居中
# print("|%s|" %poem_str.ljust(10, " ")) # 左對齊
# print("|%s|" %poem_str.rjust(10, " ")) # 右對齊
# print(poem)
字符串的切片:
切片方法適用於字符串、列表、元組(字典不可以切片)
運算符
完整的for循環語法:
for num in [1, 2, 3]:
print(num)
if num == 2:
break
else:
# 如果循環體內部使用了break退出了循環
# else下方的代碼就不會被執行
print("會執行嗎")
print("循環結束")
student = [
{"name": "阿土"},
{"name": "小美"}
]
# 學員列表中搜索指定的姓名
find_name = "阿土"
for stu_dict in student:
print(stu_dict)
if stu_dict["name"] == find_name:
print("找到%s了" % find_name)
# 如果找到了,就應該直接退出循環,而不再遍歷後續的元素
# 如果break執行了,那麼else程序就不會執行
break
else:
# 如果希望搜索列表時,所有字典檢查一遍之後,都沒有發現需要搜索的目標
# 還希望得到一個統一的提示!
print("抱歉沒有找到%s"% find_name)
print("循環結束")
待更 ...