首页 > temp > python入门教程 >
-
Day1:初识Python
一.初识命令行
pwd:打印当前工作目录;
hostname:获取我的计算机的网络名称;
mkdir:创建目录;
cd:更改目录;
ls:列出目录下的文件;
rmdir:删除目录;
pushd@popd:记录我的位置并前往...&返回之前的位置
cp:复制文件或目录;
robocopy:更强大的复制
mv:移动/重命名文件或目录
more:按页查看文件
type:输出整个文件
forfiles:对大量文件执行一个操作
dir -r:查找文件
select-string:查找文件里面的东西
help:阅读帮助手册
echo:输出一些参数
set:设置一个新的环境变量
exit:退出终端
Tip:
cd ~返回home目录(注意有空格)
cd\返回磁盘根目录(以进入另一磁盘);
cd..返回上级目录
New-Item生成一个新文件(通过扩展名生成不同类型的文件)
其他诸如cat、rm……,使用过程中慢慢了解慢慢掌握~
二.Python第一课
2.1 安装与HelloWorld
Pycharm安装与首次设置
2.2 变量
为了后面调用而将某些内容存储起来
- 变量名只能是 字母、数字或下划线的组合且第一个字符不能是数字
- 部分关键字不能声明为变量名如and、break、class……
- 常量约定用全大写如PAI=3.14159……
2.3 字符编码
ASCII:最初编码,占用127个(共255个位置),存储了数字、大小写字母及特殊字符等;1bytes
剩余位置无法满足中文需求,GB2312(1980),存储6000+汉字与600+其它符号共7000+字符;后来发现不够,95年扩展出GBK1.0收录21000+符号;00年扩展至GB18030,收录了少数民族文字等27000+;当前常用GBK
考虑各国情况,推出Unicode(万国码),2bytes
考虑内存,推出可变长的字符编码 UTF-8 en:1bytes cn:3bytes
注释:
当行注释: # 被注释内容
多行注释: ‘’’ 多行内容 ‘’’
2.4 用户输入-interaction.py
input(“提示语”)
格式化输出:
1.字符串拼接
2.%s、%d、%f占位符
3..format
2.5 if else流程判断-passwd.py/guess.py
Tip:密码用密文,可直接调用python标准库 import getpass
认证名称密码是否正确,判断语句
Python强制缩进:省略掉了结束符
1 import getpass 2 3 _username = "SJC" 4 _password = "abc123" 5 username = input("username:") 6 password = input("password:") 7 8 if _username == username and _password == password: 9 print("Welcome user {name} login...".format(name=username)) 10 else: 11 print("Invalid username or password!")
1 age_of_oldboy = 56 2 3 guess_age = int(input("guess age:")) 4 if guess_age == age_of_oldboy: 5 print("yes, you got it!") 6 elif guess_age > age_of_oldboy: 7 print("think smaller...") 8 else: 9 print("think bigger...")
2.6 循环-while循环-while.py/guess2.py
改进guess.py使之可以重复输入并限定输入次数:
改进guess2.py使之可以选择在限定次数后继续游戏:
age = 25 count = 0 while count <3: _age = int(input("guess age:")) if _age == age: print("Yes,you got it!") break elif _age > age: print("Think smaller...") else: print("Think bigger...") count +=1 if count == 3: continue_confirm = input("Do you want to continue?") if continue_confirm != "N": count = 0
for循环-guess2.py/guess for.py
1 age = 25 2 count = 0 3 for i in range(3): 4 _age = int(input("guess age:")) 5 if _age == age: 6 print("Yes,you got it!") 7 break 8 elif _age > age: 9 print("Think smaller...") 10 else: 11 print("Think bigger...") 12 else: 13 print("You have tried too mant times...")
for-步长:range(0,10,3)-从0至10且步长为3(即间隔两个),range(10)则表示从0-10且步长为1
continue-跳出本次循环并进入下一次循环 break-跳出整个循环(可打断点debug run看数据流) pass-不做任何事情,一般用做占位语句
2.7 模块(库)初识
标准库:不需安装可直接导用的库
sys: sys.path ; sys.argv
os: 与系统交互 os.system/os.popen
1 ''' 2 import sys 3 #print(sys.path) #打印环境变量 4 print(sys.argv) 5 ''' 6 import os 7 # cmd_res = os.system("dir") # 执行命令不保存结果 8 cmd_res = os.popen("dir").read() # 执行命令保存结果至某地方,需要read将结果取出来,否则输出一个内存地址 9 print("--->", cmd_res)
第三方库:需要下载安装才可使用的库
调用模块时,先从当前目录下找;若找不到,再到全局变量里寻找;再找不到,则会报错找不到模块
pyc是什么:
当我们对某个已经运行过的程序代码进行修改时,运行它会去找pyc文件,岂不是导致修改无效?不会,运行时会先对pyc文件的时间和修改时间进行判断,选择最新的执行。
2.8 数据类型
int | 整型 |
long |
长整型 (python3已取消) |
float | 浮点型 |
complex | 复数 |
bool |
布尔值 (真或假/1或0) |
str |
字符串 |
2.9 拾遗
三元运算:
result = 值1 if 条件 else 值2
进制:
二进制十进制(除二取余,逆序排列);二进制十六进制(四位一组,分别对应)
bytes类型:
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。
decode二进制转字符串(解码);encode字符串转二进制(编码)
三.练习-预习一部分内容并结合所学完成
3.1 编写登录接口(·输入用户名密码;·认证成功后显示欢迎信息;·输错三次后锁定)
初版:
进阶版(有多个用户;输入三次错误密码后用户锁定,重启程序后该用户仍是锁定状态;判定某用户名是否存在,不存在则弹出提示):
1 import sys 2 3 _username = ['ZYH', 'FKK', 'ZJL', 'WK', 'WRR', 'SJC'] # 用户名表 4 _password = ['123', '456', '789', '147', '258', '369'] # 密码表 (需要与用户名一一对应,不如嵌套) 5 blacklist = [] # 空表,后续用作黑名单 6 f = open("blacklist.txt", 'a+') 7 f.seek(0) 8 for line in f.readlines(): 9 line = line.strip('\n') 10 blacklist.append(line) 11 count = 0 12 while True: # 死循环 13 username = input("Please input your username:") 14 if username in _username: # 用户是否存在 15 if username in blacklist: # 用户是否在黑名单 16 print(f"User {username} has been locked, please contact administrator to unlock.") 17 sys.exit() 18 else: # 用户不在黑名单 19 while count < 3: # 输入三次及以下时 20 password = input("Please input your password:") 21 i = _username.index(username) # 索引用户名位置 22 if password == _password[i]: # 密码是否正确 23 print(f"Welcome you, {username}!") 24 break 25 else: # 密码不正确 26 count += 1 # 计数 27 print(f"Wrong password, you have another {3-count} chance.") # 提示 28 else: # 连续输错三次 29 f.write(username) # 用户名加入黑名单 30 f.write('\n') 31 f.close() 32 print("Too many times of wrong password, user locked") 33 break 34 else: 35 print("User doesn't exist, please input again.")
3.2 多级菜单(·三级菜单;可依次选择进入各子菜单;·所需新知识点:列表、字典):
1 import sys 2 3 data = { 4 "北京": { 5 "海淀": { 6 "海1路": ["中央财经大学", "中央民族大学", "中国人民大学"], 7 "五道口": ["清华大学", "中国矿业大学", "中国地质大学"] 8 }, 9 "房山": { 10 "房1路": ["北京工商大学", "首都师范大学"], 11 "房2路": ["大学1号", "大学2号"] 12 } 13 }, 14 "河北": { 15 "石家庄": { 16 "石1路": ["河北经贸大学", "石家庄铁道大学"], 17 "石2路": ["河北大学", "河北师范大学"] 18 }, 19 "保定": { 20 "保1路": ["华北电力大学", "河北科技大学"], 21 "保2路": ["华北理工大学", "保定师范学院"] 22 } 23 }, 24 "上海": { 25 "上1区":{ 26 "1区1号": ["上海交通大学", "上海财经大学"], 27 "1区2号": ["大学3号", "大学4号"] 28 }, 29 "上2区": { 30 "2区1号": ["上海师范大学", "上海理工大学"], 31 "2区2号": ["大学5号", "大学6号"] 32 } 33 } 34 } 35 36 while True: 37 for i in data: 38 print(i) # 打印第一级菜单(一级key) 39 choice1 = input(">>>输入名称进入下一级,输入b返回,输入q退出:") # 选择进入 40 if choice1 in data: # 输入在字典中 41 while True: # 进入下一层且只要不退出不进入下一层则一直在此层停留,故仍需一个死循环 42 for i1 in data[choice1]: 43 print('\t', i1) # 打印第二级菜单(二级key) 44 choice2 = input(">>>输入名称进入下一级,输入b返回,输入q退出:") # 选择进入 45 if choice2 in data[choice1]: # 输入在字典中 46 while True: # 进入下一层且只要不退出不进入下一层则一直在此层停留,故仍需一个死循环 47 for i2 in data[choice1][choice2]: 48 print('\t\t', i2) # 打印第三级菜单(三级key) 49 choice3 = input(">>>输入名称进入最后一级,输入b返回,输入q退出):") # 选择进入 50 if choice3 in data[choice1][choice2]: 51 while True: # 进入下一层且只要不退出不进入下一层则一直在此层停留,故仍需一个死循环 52 for i3 in data[choice1][choice2][choice3]: 53 print('\t\t\t', i3) # 打印最后一级菜单 54 choice4 = input(">>>最后一层,输入b返回,输入q退出:") 55 if choice4 == 'b': 56 break 57 elif choice4 == 'q': 58 sys.exit() 59 else: 60 print("输入错误,请重新输入") 61 elif choice3 == 'b': # 如果此处直接用if,跳出上方循环后会顺序执行此处语句,输入b会有错误,用elif则直接进入上级下一次循环 62 break 63 elif choice3 == 'q': 64 sys.exit() 65 else: 66 print("输入错误,请重新输入") 67 elif choice2 == 'b': 68 break 69 elif choice2 == 'q': 70 sys.exit() 71 else: 72 print("输入错误,请重新输入") 73 elif choice1 == 'q': 74 sys.exit() 75 else: 76 print("输入错误,请重新输入")
出处:
https://www.cnblogs.com/bitsjc/p/13612457.html