目录
Day 1 本节内容:
用户输入函数input
字符串内引用变量格式化输出
密码秘文函数 getpass
流程控制语句
range函数
一、 用户输入函数 input()
name = input('Username:')
print(name)
二、字符串内引用变量,格式化输出。
1. %s 字符串 ;%d 整数类型 ;%f 浮点数类型
info = 'name = %s age = %d num = %f' % ('zjl',18,1.1)
print(info)
#name = zjl age = 18 num = 1.100000
2. format函数
info = '姓名 {name} ;年龄 {age} ;num {num}'.format(name='zjl',age=18,num=20)
info = '姓名 {0} ;年龄 {1} ;num {2}'.format('zjl',18,20)
print(info)
#姓名 zjl ;年龄 18 ;num 20
3. 定义变量 name age num,f'{name}' 引用
info = f'姓名 {name} ;年龄 {age} ;num {num}'
三、密码 秘文函数 getpass
import getpass
name = input('Your username:')
password = getpass.getpass('Your Password:')
print(name,password)
四、流程判断语句
1.
if n == 1:
print('值为1')
elif n == 2:
print('值为2')
else:
print('1和2都不对!')
2.
while xxx:
if xxx:
break
else:
xxx
else:
xxxxxx
continue 跳出这一次循环
break 跳出此循环,后面不再执行
pass 什么都不做,返回循环
exit() 退出,可输出自定义内容
五、 range函数
for i in range(1,10,2):
print(i)
#步长为2,输出 1 3 5 7 9
Day 2 本节内容:
sys、os模块
三元运算、编码与解码
列表
元组
字符串常用参数
字典
1.模块初识
1. sys模块
import sys
print(sys.path) #打印环境变量
sys.argv[1] #参数1
2. os模块
import os
txt = os.system('dir') #执行系统命令 输出到屏幕,不保存结果
txt = os.popen('dir').read() #执行系统命令并保存结果到临时的内存地址中,通过read从内存地址读取内容
os.mkdir('new_dif') #创建目录
2.三元运算与字符串编码解码
1.三元运算
a,b,c = 1,3,5
d = a if a < b else c
print(d) #值为1
2.编码与解码
Python3中内存里的所有字符都是unicode,unicode是万国码
python3文件默认编码是 utf-8
python2文件默认编码是 ASCII
GBK编码:decode解码 转换为 Unicode:encode编码 转换为 utf-8
任意编码转换成Unicode的过程,都叫解码;Unicode转换成其他编码都要编码
msg.encode(encoding='utf-8') # 编码,encoding用于指定将原字符编码为什么格式的字符
msg2.decode(encoding='utf-8') # 解码,encoding用于指定进行解码时采用的字符编码,与字符的编码类型一致
例:gbk编码字符在mac电脑中如何不显示乱码
Python2中:gbk转换为unicode
gbk_msg = '我爱北京天安门' # gbk格式的字符
unicode_msg = gbk_msg.decode() # 解码为unicode字符
print(unicode_msg)
python3中: gbk转成unicode转换utf-8
msg = '我爱北京天安门' # utf-8字符
gbk_msg = msg.encode('gbk') # 编码为gbk字符
unicode_msg = gbk_msg.decode('gbk') # 使用gbk去解码,成为unicode字符
utf_8_msg = unicode_msg.encode('utf-8') # 将unicode编码为utf-8
3.列表
list = [0,1,2,3,4,5]
列表切片
print(list[0:3]) # [0, 1, 2]
print(list[-3:]) # [3, 4, 5]
print(list[0:6:2]) # [0, 2, 4] 步长为2
列表增删改查
list.append(6) # 在列表结尾添加元素 [0, 1, 2, 3, 4, 5, 6]
list.insert(3,'test') # 指定下标添加元素 [0, 1, 2, 'test', 3, 4, 5, 6]
list[3] = 'test2' # 指定下标修改元素 [0, 1, 2, 'test2', 3, 4, 5, 6]
list.remove('test') # 指定元素名称删除 [0, 1, 2, 4, 5]
del list[2] # 指定下标删除元素 [0, 1, 3, 4, 5]
list.pop() # 默认删除结尾元素,也可指定下标删除元素 [0, 1, 2, 3, 4]
其他用法
print(list.index('test')) # 查找列表中'test'元素的下标值
print(list.count('test')) # 查找列表中'test'元素的数量
list.clear() # 清空列表内容
list.reverse() # 将列表内容元素的顺序反过来
list.sort() # 将列表内容元素排序,特殊符号>数字>大写字母>小写字母
list.extend(list2) # 将list2列表元素合并到list】
list.copy() # 浅copy,只复制第一层,第二层指向内存地址
name1 = ['ai','bi','ci',['yy','dd'],'di']
name2 = name1.copy()
name1[0] = 'zi'
name1[3][0] = 'zz'
print(name1) # ['zi', 'bi', 'ci', ['zz', 'dd'], 'di'] 修改第一层不影响
print(name2) # ['ai', 'bi', 'ci', ['zz', 'dd'], 'di'] 修改第二层会影响,都会改掉
'''
import copy
name2 = copy.copy(name1) # 也是浅copy
name2 = copy.deepcopy(name1) #深 copy,完全复制一份,不受影响
'''
4.元组
元组和列表差不多,只不过它一旦创建便不能在修改,所以也叫只读列表。
names = ('alex','jack','tom','lili')
# 他只有两个方法,count和index
5.字符串 常用参数
name = 'jack'
name.capitalize() #首字母大写
name.title() #空格分隔的每段内容的首字母大写
name.count('j') #统计字符串中'j'的数量
name.endswith('ck') #判断字符是否以’ck‘结尾
name.startswith('j') #判断字符是否以’j‘开头
name.isalnum() # 判断字符串是否为阿拉伯数字,包含字母和数字
name.isalpha() # 判断字符串是否为纯英文字符
name.isdigit() # 判断字符串是否为整数
name.isspace() # 判断字符串是否为空格
name.expandtabs(tabsize=30) #如果字符串中包含'\t',将table键转换为30个空格
name.find('a') #查找字符a的索引
name = 'name is {name} and {year} olds'
1.字符串内引用变量
print(name.format(name='XiaoMing',year=18))
#name is XiaoMing and 18 olds
1.字符串内引用变量,传递参数以字典的格式
print(name.format_map({'name':'XiaoLi','year':20}))
#name is XiaoLi and 20 olds
2.自定义连接符拼接字符串或列表中元素的值,列表中的元素也要是字符串类型
print('_'.join('123'))
#1_2_3
print("_".join(['1','2','3']))
#1_2_3
3.在字符串两边,添加50个长度的'_'
name = 'jack'
print(name.center(50,'_'))
#_______________________jack_______________________
3.字符串长50,长度不够后面用*补全
print(name.ljust(50,'*'))
#name is {name} and {year} olds*******************
4.字符串长50,长度不够前面用*补全
print(name.rjust(50,'*'))
#*******************name is {name} and {year} olds
5.把字符中字母全部转换为小写
print(name.lower())
6.把字符中字母全部转换为大写
print(name.upper())
7.去除字符串两边的空格和换行,lstrip只去除左边的,rstrip只去除右边的
print(name.strip())
8.转换替换字符串中多个字符的值
passwd = str.maketrans('abcde','123yz') # 将'abcde'分别对应成'123yz'
print('fabcdef'.translate(passwd)) #传入转换的字符
#f123yzf
9.替换字符串内某个字符的值
print('AAaBB'.replace('AAa','BB')) # 将字符串中 AAa 替换为 BB
#BBBB
10.默认以空格将字符串转换为列表
print('A B CD'.split())
#['A', 'B', 'CD']
print('A B CD'.split('B'))
#['A ', ' CD']
.splitlines()以换行符将字符串转换为列表,与 name.split('\n')效果相同
6.字典
字典是一种key-value的数据类型。特性:字典是无序的,没有下标;key必须是唯一的,所以天生去重。
student_dict = {
'student1':'XiaoLi',
'student2':'XiaoYao',
'student3':'XiaoZZ',
}
1.字典的增删改查:
student_dict['student1'] = 'XiaoAA' # 改
student_dict['student4'] = 'ZhangSi' # 增
.setdefault 增加元素,若该key已经存在,则不修改;若key不存在,则创建。
student_dict.setdefault('student4',['CehngLong','XiaoZi'])
del student_dict['student4'] # 删除
student_dict.pop('student1') # 删除
print(student_dict.get('student4')) # 查,返回value;若没有此key,返回None
print('student4' in student_dict) # 返回True或False
print(student_dict['student3']) # 查,返回value;若没有则会报错
2.打印字典的所有value
print(student_dict.values())
#dict_values(['XiaoAA', 'XiaoYao', 'XiaoZZ', 'ZhangSi'])
3.打印字典的所有key
print(student_dict.keys())
#dict_keys(['student1', 'student2', 'student3', 'student4'])
4. .update 合并两个字典内容,重复的key 值会覆盖掉,新的key value会创建
student_dict = {
'student1':'XiaoLi',
'student2':'XiaoYao',
'student3':'XiaoZZ',
}
student2 = {
'student1':'AAaa',
'student4':'Xx'
}
student_dict.update(student2)
print(student_dict)
# {'student1': 'AAaa', 'student2': 'XiaoYao', 'student3': 'XiaoZZ', 'student4': 'Xx'}
5. 将字典转换为列表
print(student_dict.items())
# dict_items([('student1', 'AAaa'), ('student2', 'XiaoYao'), ('student3', 'XiaoZZ'), ('student4', 'Xx')])
6. .fromkeys 初始化一个字典,将列表中的所有key赋值同一个value;也可用作修改现有字典中多个key为同一个value
#注意:类似于浅copy,修改第一层数据互不影响,第二层数据指向内存地址 若修改都会受影响
NewDict = dict.fromkeys(['Aa','Bb','Cc'],100)
print(NewDict)
#{'Aa': 100, 'Bb': 100, 'Cc': 100}
NewDict['Aa'] = 90
print(NewDict)
#{'Aa': 90, 'Bb': 100, 'Cc': 100}
NewDict2 = dict.fromkeys(['Aa','Bb','Cc'],['number',100])
NewDict2['Aa'][1] = 90
print(NewDict2)
#{'Aa': ['number', 90], 'Bb': ['number', 90], 'Cc': ['number', 90]}
7.遍历字典的key和value
for i in NewDict:
print(i,NewDict[i])
# .items此方式有一个字典转换列表的过程,如果数据量大不建议用此方式
for k,v in NewDict.items():
print(k,v)
#
Aa 90
Bb 100
Cc 100