python3學習筆記(0)


一、編程語言主要從以下幾個角度分類:
1、編譯型和解釋型
2、靜態語言和動態語言
3、強類型定義語言和弱類型定義語言

編譯型:程序運行前先由負責翻譯的程序將代碼轉換成可執行代碼進行執行。例如C/C++、Pascal/Delphi、VB。其優點為運行速度快,對系統要求低,適用於開發操作系統、大型應用程序、數據庫系統等。
解釋型:程序運行時每直行到一條指令就由解釋程序將所執行到的代碼轉換成可執行代碼進行執行,如此反復,直至程序直行完畢。例如Java、JavaScript、VBScript、Perl、Python。適用於網頁腳本、服務器腳本及輔助開發接口這樣對速度要求不高,但對不同系統平台間的兼容性有一定要求的程序。
靜態語言:即靜態類型語言,在寫程序時要聲明所有變量的數據類型,數據類型會在編譯期間進行檢查。例如C/C++
動態語言:即動態類型語言,在寫程序時不用給任何變量指定數據類型,在運行期間才去做數據類型檢查。例如Python、Ruby
強類型定義語言:即強制數據類型定義的語言,一旦一個變量被指定了一個數據類型,如果不經過強制轉換,那么它永遠就是這個數據類型了。
弱類型定義語言:即數據類型可以被忽略的語言,一個變量可以賦不同類型的值。

Python是動態語言、強類型定義語言(類型安全的語言)
VBScript是動態語言、弱類型定義語言(類型不安全的語言)
Java是靜態語言、強類型定義語言(類型安全的語言)

二、Python:解釋型語言、動態語言、強類型定義語言
優點如下:
1、優雅、明確、簡單易懂
2、開發效率高,有強大的第三方庫
3、高級語言,無需考慮內存一類的底層細節
4、可移植性強,可以兼容多平台
5、可擴展性強,可以在python中使用其他程序,例如C/C++
6、可嵌入性強,可以將python腳本嵌入到其他程序,例如C/C++
缺點如下:
1、運行速度比編譯型語言慢
2、源碼以明文形式存放,不能加密
3、線程不能利用多CPU

python解釋器有:
1、CPython,用C語言開發的,使用最廣泛的
2、IPython,基於CPython開發的
3、PyPy,另一種解釋器,可以提高代碼的執行速度。
4、JPython,用Java開發的
5、IronPython,用C#開發的

Linux中,第一行用“#!/usr/bin/env python”,找python環境變量
系統自帶的環境變量在/usr/bin/,后裝的環境變量在/usr/local/bin/。

三、變量:
name = “Alex Li”
name2 = name
name = “PaoChe Ge”
print(name,name2)
以上代碼中,name2被賦值的是name所指向的內存地址,因此name的賦值發生改變,name2不會發生改變。

四、變量定義規則:
1、變量名只能是字母、下划線、數字的組合
2、變量名第一個字符不能是數字
3、不能用關鍵字作為變量名
4、3.X中可以用中文作為變量名,但不建議這樣做。

五、字符編碼:
python3.X默認使用UTF-8。
python2.X默認使用ASCII碼,需要使用 # -*- coding:utf-8 -*- 來聲明使用的字符集后,方可使用中文。

六、注釋方法:
1、單行注釋:#
2、多行注釋:''''''或者"""""",常用單引號
另,單引號或雙引號還可以打印多行,例如:
msg = '''
name = “Alex Li”
name2 = name
name = “PaoChe Ge”
'''
print (msg)

七、用戶輸入:
1、intput輸入的值,默認為字符串類型。
input()
例1:
name = input("what`s your name?")

八、格式化輸出:
name = qj
age = 30
job = it
salary = 6000

例1:字符串拼接方法,不建議,因為會在內存中開辟多塊內存空間。
info = '''
---------- info of ''' + name + ''' ---------
Name:''' + name + '''
Age:''' + age + '''
job:''' + job + '''
Salary:''' + salary

例2:使用%s、%d、%f占位
info = '''
---------- info of %s ---------
Name:%s
Age:%d
job:%s
Salary:%d
''' % (name,name,age,job,salary)
print(info)
%s:代表字符串
%d:代表整數(需強制相關變量為整數類型)
%f:代表浮點即小數(需強制相關變量為浮點類型)
打印變量類型:print(type(變量名))
強制轉換變量類型為整形:age = int(input(age))
強制轉換變量類型為字符串:age = str(input(age))

例3:使用{}占位(官方建議使用此方式)
info = '''
---------- info of {_name} ---------
Name:{_name}
Age:{_age}
job:{_job}
Salary:{_salary}
''' .format(_name = name,_age = age,_job = job,_salary = salary)
print(info)

例4:使用{}占位,花括號中不指定參數
info = '''
---------- info of {0} ---------
Name:{0}
Age:{1}
job:{2}
Salary:{3}
''' .format(name,age,job,salary)
print(info)

九、初識模塊
1、使用模塊前需先導入
例:
import XXXX
2、實現輸入為密文模塊 getpass()
例:
import getpass
password = getpass.getpass("password")

十、判斷
1、python中if語句的子語句必須要縮進,因為python中if語句沒有開始和結束標志符
2、if主語句必須以冒號結尾
3、所有的頂級代碼必須頂格寫
例1:
import getpass
username = input("username:")
password = getpass.getpass("password:")
_username = qj
_password = 123
if username == _username and password == _password:
print("welcome user {name} login....".format(name=name))
else:
print("invalid username or password!")
例2:猜年齡游戲
age_of_oldboy = 56
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")

十一、循環
1、while
count = 0
while true:
print("count:",count)
count = count +1 #count +=1
例1:
count = 0
age_of_oldboy = 56
while true:
if count == 3
break
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
count +=1
例2:
count = 0
age_of_oldboy = 56
while count < 3:
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
count +=1
else:
print ("you have tried too many times...fuck off")
例3:
count = 0
age_of_oldboy = 56
while count < 3:
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
count +=1
if count == 3:
countine_confirm = input("do you want to keep guessing..?")
if countine_confirm != "n":
count = 0

2、for
i初始為0,每完成一次循環i值自增1
for i in range(10): # 等同於for i in range(0,10,1):
print("loop:",i)
例1:設置步長
i從0開始到9結束,每次自增2
for i in range(0,10,2)
print("loop:",i)
例2:
age_of_oldboy = 56
guess_age = int(input("guess age:"))
for i in range(3):
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
else:
print ("you have tried too many times...fuck off")

3、break和continue
break:退出當前整個循環
continue:跳出本次循環,進行下一次循環
例1:
for i in range(0,10)
if i < 5:
print("loop:",i)
else:
continue
print ("hehe.....")
例2:
for i in range(10):
print(“---------”,i)
for j in range(10):
print(j)
if j > 5:
break

十二、作業:
1、編寫登錄接口
輸入用戶名密碼
認證成功后顯示歡迎信息
輸錯三次后鎖定
  1 #!/usr/bin/env python
  2 # -*- coding:utf-8 -*-
  3 #Author:Victor Qu
  4 '''
  5 需求:
  6 1、允許用戶注冊
  7     檢測用戶名是否存在
  8 2、允許用戶登錄
  9     輸入用戶名密碼
 10     檢測用戶名是否存在
 11     認證成功后顯示歡迎信息
 12     輸錯三次后鎖定
 13 '''
 14 import os
 15 
 16 
 17 def register ():
 18     """
 19     在user.data中添加用戶
 20     :return: 
 21     """
 22     logo = "用戶注冊".center(20,"*")
 23     print(logo)
 24     username = input("請輸入用戶名:")
 25     with open("user.data","r+",encoding="utf-8") as f:
 26         for line in f:
 27             user_data = line.strip().split(":")
 28             if user_data[0] == username:
 29                 print("用戶名{_username}已存在。".format(_username=username))
 30                 return
 31         else:
 32             passwd_time1 = input("請輸入密碼:")
 33             passwd_time2 = input("請再次輸入密碼:")
 34             if passwd_time1 == passwd_time2:
 35                 f.write("\n{_username}:{_password}:user:True".format(_username=username, _password=passwd_time2))
 36                 print("恭喜您,用戶{_username}已注冊完成。".format(_username=username).center(10, "*"))
 37                 return True
 38             else:
 39                 print("輸入的密碼不一致")
 40                 return
 41 
 42 
 43 def login ():
 44     """
 45     驗證用戶登錄信息,密碼輸錯三次則鎖定
 46     :return: 
 47     """
 48     logo = "用戶登錄".center(20,"*")
 49     print(logo)
 50     username = input("請輸入用戶名:")
 51     with open("user.data","r+",encoding="utf-8") as f:
 52         for line in f:
 53             user_data = line.strip().split(":")
 54             if user_data[0] == username:
 55                 break
 56         else:
 57             print("用戶{_username}不存在,請注冊。".format(_username = username))
 58             return
 59 
 60     with open("user.data","r+",encoding="utf-8") as f,open("~user.data","w",encoding="utf-8") as f0:
 61         for line in f:
 62             user_data = line.strip().split(":")
 63             if user_data[0] == username:
 64                 if user_data[3] == "True":
 65                     for i in range(3):
 66                         passwd = input("請輸入密碼:")
 67                         if user_data[1] == passwd:
 68                             print("恭喜,用戶{_username}登錄成功。".format(_username = username))
 69                             return True
 70                     else:
 71                         print("密碼輸錯次數過多,用戶{_username}已鎖定。".format(_username = username))
 72                         f0.write(line.replace("True","False"))
 73                         continue
 74                 else:
 75                     print("用戶{_username}已被鎖定。".format(_username = username))
 76             f0.write(line)
 77     os.remove("user.data")
 78     os.rename("~user.data","user.data")
 79 
 80 
 81 def main():
 82     while True:
 83         print("歡迎使用用戶登錄/注冊系統".center(20,"*"))
 84         li = ("1、登錄","2、注冊","3、退出")
 85         for line in li:
 86             print(line)
 87         choice = input("請您選擇:")
 88         if choice == "1":
 89             ret = login()
 90             if ret:
 91                 exit()
 92         elif choice == "2":
 93              register()
 94         elif choice == "3":
 95             print("謝謝,再見")
 96             exit()
 97         else:
 98             print("您的選擇錯誤,請重新選擇")
 99 
100 
101 main()
View Code

2、多級菜單
三級菜單
可一次選擇進入各子菜單
所需新知識點:列表、字典
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:Victor Qu
 4 '''
 5 需求:
 6 1、三級菜單
 7 2、可一次選擇進入各子菜單
 8 3、可選擇返回上一菜單
 9 4、可選擇返回主菜單
10 5、可選擇退出
11 '''
12 
13 
14 DICT_OF_MEMU = {
15     "中國":{
16         "浙江省":{
17             "杭州市":["上城區","下城區"],
18             "寧波市":["海曙區","江東區"],
19         },
20         "江蘇省":{
21             "南京市":["鼓樓區","玄武區"],
22             "鎮江市":["京口區","丹徒區"],
23         }
24     },
25     "美國":{
26         "俄亥俄州":{
27             "城市0":["第零區","第一區"],
28             "城市1":["第二區","第三區"],
29         },
30         "加利福尼亞州":{
31             "城市2":["第四區","第五區"],
32             "城市3":["第六區","第七區"],
33         }
34     }
35 }
36 
37 CHS = ["","",""]
38 
39 while True:
40     if CHS[1] == "":
41         print("MENU".center(20, "*"))
42         for country in DICT_OF_MEMU:
43             print(country)
44         chice = input("請輸入:\n"
45                       "X=退出")
46         if chice == "x" or chice == "X":
47             exit("謝謝使用,再見!")
48         elif chice in DICT_OF_MEMU:
49             CHS[0] = chice
50         else:
51             print("您的輸入錯誤,請重新輸入。")
52             continue
53 
54     while True:
55         print(CHS[0].center(20, "*"))
56         for province in DICT_OF_MEMU[CHS[0]]:
57             print(province)
58         chice = input("請輸入:\n"
59                       "X=退出  B=上級菜單  M=主菜單")
60         if chice == "x" or chice == "X":
61             exit("謝謝使用,再見!")
62         elif chice == "b" or chice == "B":
63             CHS[1] = ""
64             break
65         elif chice == "m" or chice == "M":
66             CHS[1] = ""
67             break
68         elif chice in DICT_OF_MEMU[CHS[0]]:
69             CHS[1] = chice
70             break
71         else:
72             print("您的輸入錯誤,請重新輸入。")
73             continue
74 
75     if CHS[1] != "":
76         while True:
77             print(CHS[1].center(20, "*"))
78             for city in DICT_OF_MEMU[CHS[0]][CHS[1]]:
79                 print(city)
80             chice = input("請輸入:\n"
81                         "X=退出  B=上級菜單  M=主菜單")
82             if chice == "x" or chice == "X":
83                 exit("謝謝使用,再見!")
84             elif chice == "b" or chice == "B":
85                 break
86             elif chice == "m" or chice == "M":
87                 CHS[1] = ""
88                 break
89             elif chice in DICT_OF_MEMU[CHS[0]][CHS[1]]:
90                 CHS[2] = chice
91                 print(CHS[2].center(20, "*"))
92                 for district in DICT_OF_MEMU[CHS[0]][CHS[1]][CHS[2]]:
93                     print(district)
94                 exit()
95             else:
96                 print("您的輸入錯誤,請重新輸入。")
97                 continue
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM