初學Python(第一課)
今天整理一下關於Python初學者的基礎知識部分的第一課,因為之前學習過C,所以過於基礎的知識就不詳細記錄了。
Python相對於C\C++來說,在語法方面已經很簡單了;甚至對於JavaScript也是很簡單的,減去了很多冗余的部分,讓程序的編寫更簡單便捷。
一、變量
Python變量的定義很簡單,Python是動態強類型語言Python省去了定義時的數據類型。C\C++在定義變量的時候都要明確聲明該變量的數據類型,如int、char、floor、double、string等等,JavaScript已經簡化了變量定義,但是仍然需要聲明如var、let。相比之下Python就顯得很方便了,並且Python不需要在每一行代碼後面加上分號。
Python聲明變量的格式為變量名 = “變量值”,例如:
name = "cen"
Python在變量的命名上與其他的編程語言類似,由字母、數字和下劃線組成,由字母或下劃線開始;並且有很多預留關鍵字不可以作為變量名:and,as,assert,break,class,continue,def,del,elif,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,with,yield
常量
在很多編程語言中都可以定義常量,Python也不例外。不過Python對於常量的定義就簡單的多,只需要將常量名用全大寫字母來命名即可。
二、註釋
Python中單行註釋:#,多行註釋用‘‘‘......‘‘‘包起來,當然‘‘‘......‘‘‘也可以用於多行打印,下面會有例子,這裏就不再贅述了。
三、輸入與格式化輸出
1、輸入
C\C++在用戶交互是使用的輸入有scanf和cin,Python的用戶交互程序則用的是input,並且Python的輸入相比較於C\C++來說對格式的要求比較低,並且語法也相對比較簡單,可以將輸入內容和提示內容在一條語句內顯示。Python2中的輸入raw_input與Python3中的input是相同的,其實Python2中也有另一個input方法,不過其效果比較雞肋,所以不推薦使用。Python3中的input方法才是正道。
格式如下:變量名 = input ("提示內容") 例如:輸入用戶名和密碼:
username = input("name: ")
password = input("password: ")
print(username,password)
執行效果如下:
name: cen password: 123 cen 123
大家可以看到無論是用戶名和密碼都是明文的,安全性很低,那麽在輸入時加密輸入密碼,類似於JavaScript中的input-password標簽,應該怎麽做呢?
getpass.getpass():
首先,要在代碼中引入Python的標準庫:import getpass,然後就可以愉快的使用getpass.getpass()方法啦
import getpass username = input("username: ") password = getpass.getpass("password: ") print (username,password)
執行效果如下:
name: cen
password:
cen 123
不過這個方法在PyCharm中無法執行,不方便調試,這是一個缺點,另一個缺點是在輸入密碼時看不到輸入的位數,並且沒有退格效果。
2、格式化輸出
這個直接用例子來理解,例如:在Python中輸入以下數據並輸出如下格式:
----information of 姓名----
Name:
Age:
Job:
Salary:
name = input("name") age = input("age") job = input("job") salary = input("salary")
Python中輸出可以有一下幾種方法:
(1)字符串拼接法
字符串拼接法就說到了我們上面說的‘‘‘......‘‘‘多行打印。實現代碼:
info1 = ‘‘‘ ----information of ‘‘‘ + name + ‘‘‘---- Nmae:‘‘‘ + name + ‘‘‘ Age:‘‘‘ + age + ‘‘‘ Job:‘‘‘ + job + ‘‘‘ Salary:‘‘‘ + salary print(info1)
不過字符串拼接法是最不好用的一種方法,多次開辟內存空間,效率低下,不建議使用。
(2)引用變量-%
引用變量的方法相對於字符串拼接方法來說無疑是更加便捷的方法了。
a、%s-----數據格式占位法。這種方法使用每一個數據的數據格式來占位,在最後給出每個占位相應的變量名。實現代碼:
info2 = ‘‘‘ -----information of %s----- Name:%s Age:%s Job:%s Salary:%s ‘‘‘%(name,name,age,job,salary) print(info2)
這裏是各種數據類型所對應的符號:
符 號 | 描述 |
---|---|
%c | 格式化字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數 |
%u | 格式化無符號整型 |
%o | 格式化無符號八進制數 |
%x | 格式化無符號十六進制數 |
%X | 格式化無符號十六進制數(大寫) |
%f | 格式化浮點數字,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 作用同%e,用科學計數法格式化浮點數 |
%g | %f和%e的簡寫 |
%G | %f 和 %E 的簡寫 |
%p | 用十六進制數格式化變量的地址 |
需要註意的是:(1)占位和變量名一定要一一對應。
(2)input輸入的內容默認格式都是string類型,為了增強代碼的規範性和可讀性以及邏輯的嚴密性需要轉換類型,用到數據類型的強制轉換。格式變量名 = 數據類型()
例子如下(將字符串轉化為整型):
age = int(input("age: "))
b、.format(_name = name)-----賦值 這種方法用一個占位名占位,在最後將變量的值賦給占位名。實現代碼如下:
info3 = ‘‘‘ -----information of {_name}---- Name:{_name} Age:{_age} Job:{_job} Salary:{_salary} ‘‘‘.format( _name = name,_age = age,_job = job,_salary = salary) print(info3)
c、.format------數字占位 這種方法用數字(從0開始)來替代上面的占位名,更加簡潔,但是對順序要求很嚴格。實現代碼如下:
info4 = ‘‘‘ ----information of {0}---- Name:{0} Age:{1} Job:{2} Salary:{3} ‘‘‘.format(name,age,job,salary) print(info4)
以上方法均可格式化輸出,執行結果如下:
name: cenage: 21
job: student
salary: 1
-----info of cen-----
Name:cen
Age:21
Job:student
Salary:1
四、if-else流程判斷
在每種編程語言中都有條件判斷語法,if-else-elif是Python中的條件判斷,語法格式如下:
if 條件1: A elif 條件2: B else: C
Eg:判斷輸入的用戶名密碼是否合法:
_username = "cen" _password = "999999" username = input("username: ") password = input("password: ") if username == _username and password == _password: print("welcome user {name} login...".format(name = username)) else: print("wrong username or password")
如果輸入正確則:
username: cen password: 999999 welcome user cen login...
如果輸入錯誤則:
username: cen password: 123 wrong username or password
五、循環
1、while循環while循環語法格式:
while 條件: 循環體 else: B
Eg:輸出0-2
count = 0 while count < 3: print(count) count += 1 else: print("已經到3啦")
執行結果:
0 1 2 已經到3啦
2、for循環
for循環語法格式如下:
for 計數器 in range(參數): 循環體 else: B
for語句括號中的參數可以為一個參數,兩個參數,三個參數。
如果是一個參數(E),則計數器從0開始運行到E結束;
如果是兩個參數(B,E),則計數器從B開始運行到E結束;
如果是三個參數(B,E,S),則計數器從B開始運行到E結束,每隔S執行一次循環體;
Eg1:輸出0-2
for i in range(3): print(i) else: print("已經到3啦")
0 1 2 已經到3啦
Eg2:輸出2-4
for i in range(2,5): print(i) else: print("已經到5啦")
2
3
4
已經到5啦
Eg3:輸出2-10,從2開始每隔3個打印一次
for i in range(2,10,3): print(i) else: print("已經到10啦")
2
5
8
已經到10啦
3、continue,break和嵌套循環
(1)continue用於跳過本次循環;break用於結束整個循環
下面的例子有助於理解continue和break的區別
for i in range(5): if i == 2: continue print(i) print("這是一條分界線") for i in range(5): if i == 2: break print(i)
執行結果如下:
0 1 3 4 這是一條分界線 0 1
(2)嵌套循環 Eg:
for i in range(4): if i == 2: continue print(i,"----") for j in range(5): if j == 2: break print(" ",j)
0 ---- 0 1 1 ---- 0 1 3 ---- 0 1
例題:猜數字遊戲,規則如下:規定一個固定數字(如78),用戶可以輸入三次,用戶輸入的數字如果大於78,則提示“過大”;用戶輸入的數字如果小於78則提示“過小”;用戶輸入的數字如果等於78,則提示“猜對了”並結束遊戲。用戶輸入三次後如果任未猜對,則提示“是否想繼續遊戲”,如果用戶輸入“N”則結束遊戲,否則繼續遊戲;依次循環;
代碼實現:
main_number = 78 count = 3 while count: guess_number = int(input("guess_number:") ) if guess_number == main_number: print("yes,you got it") break elif guess_number > main_number : print("too big") else: print("too small") count -= 1 if count == 0: continue_confirm = input("Do you want to keep guessing?") if continue_confirm != ‘n‘: count = 3
初學Python(第一課)