python3学习笔记(0)

时间:2022-06-22 18:35:04
一、编程语言主要从以下几个角度分类:
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、编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
python3学习笔记(0)python3学习笔记(0)
  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、多级菜单
三级菜单
可一次选择进入各子菜单
所需新知识点:列表、字典
python3学习笔记(0)python3学习笔记(0)
 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