Python基礎:print & input & 變數 & 運算符 & Python數據類型 & 運算符與表達式 Python 基礎 1 註釋 單行註釋 多行註釋 三個單引號'''括起來 三個雙引號"""括起來 print 輸出 作用:列印到屏幕上一些信息 可以接受多個字元串,用逗號分隔,遇到逗號會 ...
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])) 5 print(random.choice(range(5))) #range(5)== [0,1,2,3,4] 3 print(random.choice("Lee")) #"Lee" == ["L","e","e"] e
產生一個1~100之間的隨機數
r1 = range(1,101) for i in r1: print(i) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
從指定範圍內,按指定的基數遞增的集合中選取一個隨機數
# 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