Python基礎:print & input & 變量 & 運算符 & Python數據類型 & 運算符與表達式
Python 基礎 1
注釋
單行注釋
#我注釋了一行
多行注釋
三個單引號'''括起來
''' 我可以注釋多行 我可以注釋多行 我可以注釋多行 '''
三個雙引號"""括起來
""" 我可以注釋多行 我可以注釋多行 我可以注釋多行 """
print 輸出
作用:打印到屏幕上一些信息
可以接受多個字符串,用逗號分隔,遇到逗號會輸出一個空格
print(" It's a beautifu day", "Nice day", "my finished") print(18) print(10 + 8) print("10 + 8 =", 18)
input 輸入
作用:從外部獲取變量的值
等待輸入(阻塞),輸入的內容報在age變量里
age = input("請輸入您的年齡:") print("age =", age)
變量
概述:程序可操作的存儲區的名稱,程序運行期間能改變的數據,每個變量都有特定的類型;把程序運行的中間結果臨時的存在內存里,以便后續的代碼調用。
作用:將不同類型的數據存儲到內存
變量的定義:變量名 = 初始值(為了確定變量的類型)
數據的存儲:變量名 = 數據值 (注意:變量在使用前必須先“定義”(即賦予變量一個值),否則會出現錯誤)
刪除變量:del 變量名 (刪除后變量無法引用)
定義變量的規則
變量名只能是 字母 、數字或下划線的任意組合
變量名的第一個字符不能是數字
變量的定義要具有可描述性
以下關鍵字不能聲明為變量名:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
推薦定義方式
#駝峰體 AgeOfOldboy = 56 NumberOfStudents = 80 #下划線 age_of_oldboy = 56 number_of_students = 80
變量的賦值
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "wupeiqi" name2 = "alex"
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "taibai" name2 = name1
定義變量不好的方式舉例
變量名為中文、拼音
變量名過長
變量名詞不達意
常量
常量即指不變的量,如pai 3.141592653..., 或在程序運行過程中不會改變的量
數據類型
什么是數據類型?
我們人類可以很容易的分清數字與字符的區別,但是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,“漢”是文字,否則它是分不清1和‘漢’的區別的,因此,在每個編程語言里都會有一個叫數據類型的東東,其實就是對常用的各種數據類型進行了明確的划分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。
整數 int
Python可以處理任意大小的整數,當然包括負整數,在程序中的表示和數學的寫法一樣
num1 = 10 num2 = num1 print(id(num2)) 1998374864 # 連續定義多個變量 num3 = num4 = num5 = 1 print(num3, num4, num5) 1 1 1 #交互式賦值定義變量 num6, num7 = 6, 7 print(num6, num7) 6 7
布爾值 bool
布爾值就兩種:True,False。就是反應條件的正確與否。
真 1 True。
假 0 False。
浮點數 float
浮點型由整數部分與小數部分組成,浮點數運算可能會有四舍五入的誤差
f1 = 1.1 f2 = 2.2 f3 = f1 + f2 print(f3) 3.3000000000000003
字符串類型(str)
在Python中,加了引號的字符都被認為是字符串!
>>> name = "Alex Li" #雙引號 >>> age = "22" #只要加引號就是字符串 >>> age2 = 22 #int >>> hometown = 'ShanDong' #單引號也可以
那單引號、雙引號、多引號有什么區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種情況 你需要考慮單雙的配合
msg = "My name is Alex , I'm 22 years old!"
多引號什么作用呢?作用就是多行字符串必須用多引號
msg = ''' 今天我想寫首小詩, 歌頌我的同桌, 你看他那烏黑的短發, 好像一只炸毛雞。 ''' print(msg)
數據類型轉換
print(int(1.9)) 1 print(float(1)) 1.0 print(int("123")) 123 print(float("12.3")) 12.3 #如果有其他無用字符會報錯 print(int("abc")) print(int("123abc")) Traceback (most recent call last): File "H:/Python項目/day/file.py", line 2, in <module> print(int("abc")) ValueError: invalid literal for int() with base 10: 'abc' #只有作為正負號才有意義 print(int("+123")) 123 #print(int("12+3")) #無意義會報錯 print(int("-123")) -123
數字功能
返回數字的絕對值 abs
a1 = -10 a2 = abs(a1) print(a2) 10
比較兩個數的大小
a3 = 100 a4 = 9 print((a3>a4)-(a3<a4)) 1
返回給定參數的最大值 max
print(max(1,2,3,4,5,6,7,8)) 8
返回給定參數的最小值 min
print(min(1,2,3,4,5,6,7,8)) 1
求 x 的 y 次方 pow
print(pow(2, 5)) 32
round(x[,n])返回浮點數x的四舍五入的值,如果給出n值,則代表舍入到小數點后n位
print(round(3.456)) 3 print(round(3.556)) 4 print(round(3.456, 2)) 3.46 print(round(3.546, 1)) 3.5
數學相關的庫 math
import math # 向上取整 print(math.ceil(18.1)) 19 print(math.ceil(18.9)) 19 # 向下取整 print(math.floor(18.1)) 18 print(math.floor(18.9)) 18 # 返回整數部分與小數部分 print(math.modf(22.3)) (0.3000000000000007, 22.0) # 開方 print(math.sqrt(16)) 4.0
range 指定范圍,生成指定數字
for i in range(1,10): print(i) for i in range(1,10,2): # 步長 print(i) for i in range(10,1,-2): # 反向步長 print(i)
隨機數 random
從序列的元素中隨機挑選一個元素
import random print(random.choice([1, 3, 5, 7, 9])) print(random.choice(range(5))) #range(5)== [0,1,2,3,4] print(random.choice("Lee")) # "Lee" == ["L", "e", "e"] >打印結果: 1 0 e
產生一個1~100之間的隨機數
print(random.choice(range(100))) 91
從指定范圍內,按指定的基數遞增的集合中選取一個隨機數
# random.randrange([start,] stop[,step]) # start--指定范圍的開始值,包含在范圍內,默認是0 # stop--指定范圍的結束值,不包含在范圍內 # step--指定的遞增基數,默認是1 print(random.randrange(1,100,2)) 13 # 從0-99選取一個隨機數 print(random.randrange(100)) 61
隨機生成[0,1]之間的數(浮點數)
print(random.random()) 0.14728254253360773
隨機生成一個實數,它在[3,9]范圍
print(random.uniform(3,9)) 4.516309142130013
運算符與表達式
算數運算
表達式:由變量、常量和運算符組成的式子
算術運算符和算術運算表達式
算術運算符
+ - * / % ** //
以下假設變量:a=10,b=20
比較運算
以下假設變量:a=10,b=20
賦值運算
以下假設變量:a=10,b=20
邏輯運算
and
邏輯與: and 邏輯與運算表達式:表達式1 and 表達式2 值: 如果表達式1的值為真,表達式2的值也為真,整體邏輯與運算表達式的值為真 如果表達式1的值為真,表達式2的值為假,整體邏輯與運算表達式的值為假 如果表達式1的值為假,表達式2的值為真,整體邏輯與運算表達式的值為假 如果表達式1的值為假,表達式2的值也為假,整體邏輯與運算表達式的值為假 【有一個為假就為假】 表達式1 and 表達式2 and 表達式3 and ...... and 表達式n num1 = 10 num2 = 20 if num1 and num2: print("&&&&&&&&&&&") &&&&&&&&&&&
or
邏輯或: or 邏輯或運算表達式:表達式1 or 表達式2 值: 表達式1的值為真,表達式2的值為真,邏輯或運算表達式為真 表達式1的值為真,表達式2的值為假,邏輯或運算表達式為真 表達式1的值為假,表達式2的值為真,邏輯或運算表達式為真 表達式1的值為假,表達式2的值為假,邏輯或運算表達式為假 【有一個為真就為真】 表達式1 or 表達式2 or 表達式3 or ...... or 表達式n num3 = 0 num4 = 1 if num3 or num4: print("||||||||||") ||||||||||
not
邏輯非: not 邏輯非運算表達式: not 表達式 值: 如果表達式的值為真,整體邏輯非運算表達式的值為假 如果表達式的值為假,整體邏輯非運算表達式的值為真 【顛倒黑白】 if not 0: print("++++++++++") ++++++++++
成員運算符
in:如果在指定的序列中找到值返回True,否則返回False
not in: 如果在指定的序列中沒有找到值返回True,否則返回False
身份運算符
is:判斷兩個標志符是不是引用同一個對象
is not:判斷兩個標志符是不是引用不同的對象
運算符優先級
運算符優先級 ** ~ + - 正負號(一元加減) * / % // + - >> << & ~ | <= < > >= == != = %= += -= //= is in not in not in and or not
if for while 語句
if 語句
格式:
if 表達式: 語句...
邏輯:當程序執行到if語句時,首先計算“表達式”的值,如果“表達式”的值為真,那么執行if下的“語句”,如果“表達式”的值為假,則跳過整個if語句繼續向下執行。
何為真假?
假:0 0.0 '' None False 真:除了假就是真
num5 = 10 num6 = 20 if num5 == num6: num5 = 100 print("num5 =", num5) num5 = 10 -------------------------------- num5 = 20 num6 = 20 if num5 == num6: num5 = 100 print("num5 =", num5) num5 = 100
if -else 語句
格式:
if 表達式: 語句1 else: 語句2
邏輯:當程序執行到if-else語句時,首先計算“表達式”的值,如果表達式的值為真,則執行 “語句1”。執行完“語句1”跳出整個if-else語句。如果“表達式”的值為假,則執行“語句2”。執行完“語句2”跳出整個if-else語句。
num = int(input()) if num % 2 == 0: print("是偶數") else: print("是奇數")
if-elif-else 語句
格式:
if 表達式1: 語句1 elif 表達式2: 語句2 elif 表達式3: 語句3 …… elif 表達式n: 語句n else: #可有可無 語句e
邏輯:當程序執行到if-elif-else語句時,首先計算“表達式1”的值,如果“表達式1”的值為真,則執行“語句1”,執行完“語句1”,則跳過整個if-elif-else語句。如果“表達式1”的值為假,計算“表達式2”的值。如果“表達式2”的值為真,則執行“語句2”,執行完“語句2”,則跳過整個if-elif-else語句。如果“表達式2”的值為假,計算“表達式3”的值。如此下去直到某個表達式的值為真才停止,如果沒有一個真的表達式,且有else,則執行“語句e”
age = int(input()) if age < 0: print("娘胎里") if age >=0 and age <= 3: print("嬰兒") if age >=4 and age <= 6: print("兒童") if age >=7 and age <= 18: print("童年") if age >=19 and age <= 30: print("青年") if age >=31 and age <= 40: print("壯年") if age >=41 and age <= 50: print("中年") if age >=51 and age <= 100: print("老年") if age >=101 and age <= 150: print("老壽星") if age > 150: print("老妖怪")
for 循環語句
格式:
for 變量名 in 集合: 語句
邏輯:按順序取“集合”中的每個元素賦值給“變量”,在去執行語句。如此循環往復,直到取完“集合”中的元素截止
range([start,] end[, step])函數 列表生成器
start默認為0,step默認為1
功能呢:生成數列
a = range(10) print(a) range(0, 10) for x in range(10): print(x, end=" ") 0 1 2 3 4 5 6 7 8 9 for y in range(2, 20, 2): print(y, end=" ") 2 4 6 8 10 12 14 16 18
同時遍歷下標和元素
方法一: for index, m in enumerate([1,2,3,4,5]): #index, m = 下標,元素 print(index, m) 0 1 1 2 2 3 3 4 4 5 方法二: index = 0 for i in range(1,6): print(index, i) index += 1 0 1 1 2 2 3 3 4 4 5
while 循環語句
格式:
while 表達式: 語句
邏輯:當程序執行到while語句時,首先計算“表達式”的值,如果“表達式”的值為假,那么結束整個while語句。如果“表達式”的值為真,則執行“語句”,執行完“語句”再去計算“表達式”的值。如果“表達式”的值為假,那么結束整個while語句。如果“表達式”的值還為真,則執行“語句”,執行完“語句”再去計算“表達式”的值。如此循環往復,知道表達式的值為假才停止。
while 表達式: 語句1 else: 語句2 邏輯:在條件語句(表達式)為False時執行else中的“語句2” a = 1 while a <= 3: print("lee is a good man!") a += 1 else: print("very very good") print("you are right")
break 語句
作用:
跳出for和while的循環
注意:只能跳出距離他最近的那一層循環
for i in range(10): print(i) if i == 5: break num = 1 while 1 <= 10: print(num) if num == 3: break num += 1 #注意:循環語句可以有else語句,break導致循環截止,不會執行else下面的語句 else: print("lee is a good man")
continuc 語句
作用:跳出當前循環中的剩余語句,然后繼續下一次循環
注意:跳出距離最近的循環
for i in range(10): print(i) if i == 3: continue print("*") print("&") num = 0 while num < 10: print(num) if num == 3: num += 1 continue print("*") print("&") num += 1