个人学习总结笔记如有不足和错误欢迎指教谢谢
1、执行 Python 脚本的两种方式
1、进入python直接打命令
2、让python运行1.py
2、简述位、字节的关系
8位等于1字节
3、简述 ascii、unicode、utf-8、gbk 的关系
1、ASIIC编码中一个字符的大小就是1Byte
2、Unicode将各国文字统一编码,所以Unicode编码可以看做是ASCII的扩展。特点:速度快,但是占内存大。
3、UTF-8=ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存等等
4、GBK也是基于Unicode编码的进一步优化,GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示。
cmd终端默认GBK
unicode utf8 gbk(针对中文)
utf8: 用3个字节表示中文
gbk : 用2个字节表示中文
4、请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数
utf-8:一个汉字是三个字节
gbk:一个汉字是2个字节
5、Pyhton 单行注释和多行注释分别用什么?
单行注解:#
多行注解:'''中间是需要注解的内容(各个行)'''
6、声明变量注意事项有那些?
变量名必须是:字母、数字、下划线 组成的,不能使用数字开头而且不能使用python里面的关键字
7、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
n1 = 5
v = n1.bit_length()
print (v)
8、布尔值分别有什么?
真True 或者 假False
"" = False
" " = True
0 = False
其他 = True
9、阅读代码,请写出执行结果
a = "alex"
b = a.capitalize() #首字母大写
print(a)
print(b)
请写出输出结果:
alex
Alex
10、写代码,有如下变量,请按照要求实现每个功能
name = " aleX "
a. 移除 name 变量对应的值两边的空格,并输入移除后的内容
v = name.strip()
print('a',v)
b.判断 name 变量对应的值是否以 "al" 开头,并输出结果
v1 = v.startswith('al')
print('b',v1)
c.判断 name 变量对应的值是否以 "X" 结尾,并输出结果
v2 = v.endswith('X')
print('c',v2)
d.将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
v3 = v.replace('l','p')
print('d',v3)
e.将 name 变量对应的值根据 “l” 分割,并输出结果
v4 = v.partition('l')
print('e',v4) #e ('a', 'l', 'eX')
v5 = v.split('l')
print('e1',v5) #e1 ['a', 'eX']
f.请问,上一题 e 分割之后得到值是什么类型(可选)?分段序列 ?字典?
('a', 'l', 'eX') = 元祖类型数据,不可变序列
['a', 'eX'] = 列表数据,是可变数据
g.将 name 变量对应的值变大写,并输出结果
v6 = v.upper()
print('g',v6) #g ALEX
h.将 name 变量对应的值变小写,并输出结果
v7 = v.lower()
print('h', v7) #h alex
i.请输出 name 变量对应的值的第 2 个字符?
v8 = v[1]
print('i',v8) #i l
j.请输出 name 变量对应的值的前 3 个字符?
v9 = v[0:3]
print('j',v9) #j ale
k.请输出 name 变量对应的值的后 2 个字符?
v14 = v[-2:]
print('k', v14) #k eX
l.请输出 name 变量对应的值中 “e” 所在索引位置?
v11 = v.find('e')
print('l',v11) #l 2
m.获取子序列,仅不包含最后一个字符。如: oldboy 则获取 oldbo; root 则获取 roo
v12 = input('>>>') #等待用户输入
v13 = len(v12) #计算用户输入的字符串的字符数
v13 = v12[0:(v13-1)] #获取从0位到字符串长度减1位的 字符串数值
print(v13)
11、字符串是否可迭代对象?如可以请使用 for 循环每一个元素?
能被for循环就是可迭代
v1 = input('>>>')
for v2 in v1 :
print (v2)
12、请用代码实现:
a. 利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"
li = "alexericrain"
v = '_'.join(li)
print(v) #a_l_e_x_e_r_i_c_r_a_i_n
b. 利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain']
li = ['alex','eric','rain']
v = '_'.join(li)
print(v) #alex_eric_rain
13、Python2 中的 range 和 Python3 中的 range 的区别?
python2 中 第一次程序运行到range时会在内存里创建出所有的range数字
python3 中 第一次程序运行到range时只会在内存中创建 range首尾的两个数字
x = range(0,100,1)
for v in x :
print(v) # 1 - 99
x1 = range(100,0,-1)
for v1 in x1 :
print(v1) # 100 - 1
14、实现一个整数加法计算器:例如用户输入 5+5 、5+ 6、 6 + 8 、 9 +9
n = input('>>>')
v1,v2 = n.split('+') #以 + 为分割符 把用户输入的字符串 分割成两个,并且装入v1 和 v2 两个变量里面
v3 = int(v1) + int(v2) #把v1 和 v2 转换成int数据类型然后相加
print(v3)
虽然实现了但是有个疑问?就是split之后 v1和v2 里面可能右空格这个字符,但是可以直接通过int命令转换??反正最终实验结果是成功了
15、计算用户输入的内容中有几个十进制小数?几个字母?(统计用户一共输入了多少位数字或字母)
shuZiShuLiang = 0
ziMuShuLiang = 0
shuRuDeZhi = input('请输入数字或字母:') #等待用户输入 任意值字符串
for x in range(0, len(shuRuDeZhi), 1): #循环0 到 字符串位数的数字每次数值加1
v = shuRuDeZhi[x] #给变量V赋值 为输入字符串x位的 字符
if v.isdecimal(): #如果当前的字符 是数字
shuZiShuLiang += 1 #则shuZiShuLiang值加1
elif v.isalpha(): #如果当前字符 是字母
ziMuShuLiang += 1 #则ziMuShuLiang值加1
else:
pass #如果输入的不是数字也不是字母则什么都不做
print('数字', shuZiShuLiang)
print('字母', ziMuShuLiang)
PS:
判断数字用:
isdecimal :只能判断阿拉伯数字为 真 (推荐用这个比较准)
判断字母用:
isalpha 判断字符串中是否只含有字母 或 汉字,输出布尔值
16、简述 int 和 9 等数字
9 是一个数字 是对象 它包含在 int中
str 是字符串类 是一种类型
这就是数据类型与数据的关系
17、制作趣味模板程序
xxx 出生在xxx国 xxx市 从小就是一个 聪明的x(男/女)孩子。
yongHuMingCheng = input('请输入您的姓名:')
chuShengGuoJia = input('请输入您出生的国籍:')
chuShengChengShi = input('请输入您出生的城市:')
xingBie = input('请输入您的性别(男/女):')
#xianShiWenBen = '{x}出生在{x1} {x2} 从小就是一个 聪明的{x3}孩子' #如果直接在{}中写入变量名称那么显示的就是{变量命},因为这个赋值时字符串在''内部
xianShiWenBen = '{0}出生在{1}{2}从小就是一个聪明的{3}孩子'
#上面创建了 显示文本的模板 用了4个占位符
#v = xianShiWenBen.format(x = yongHuMingCheng, x1 = chuShengGuoJia, x2 = chuShengChengShi, x3 = xingBie)
v = xianShiWenBen.format(yongHuMingCheng, chuShengGuoJia, chuShengChengShi, xingBie)
#上面使用了format格式命令 分别依次带入用户所填写的变量值到模板的空位里面,顺序是0到3
print(v)
18、制作随机验证码,不区分大小写
while True: #无线循环
def check_code():#以下时生成验证码的命令
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current !=i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode +=str(temp)
return checkcode
code = check_code()
print (code) #显示验证码
xiaoXieXiTongYanZhengMa = code.lower() #把系统生成验证码变成小写并赋值给变量
yongHuYanZhengMa = input('请输入验证码:') #让用户输入验证码
xiaoXieYongHuYanZhengMa = yongHuYanZhengMa.lower() #把用户输入验证码变成小写并赋值给 xiaoXieYongHuYanZhengMa 变量
if xiaoXieYongHuYanZhengMa == xiaoXieXiTongYanZhengMa: #判断小写用户验证码和小写系统验证码是不是一样
print('验证码正确') #如果一样就显示 验证码正确
break #跳出循环
else:
print('验证码有误请重新输入') #如果不一样就显示 重新输入
29、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:123,qwe,我们,天上,okm
#建立一个敏感词库:123,qwe,我们,天上,okm
#敏感词库:123,qwe,我们,天上,okm
yongHuShuRu = input('>>>') #让用户输入含有敏感词的语句
v = yongHuShuRu.replace('123','***' ) # 分5步过滤敏感词
v = v.replace('qwe', '***')
v = v.replace('我们', '**')
v = v.replace('天上', '**')
v = v.replace('okm', '***')
print(v)
30、制作表格
循环提示用户输入:用户名、密码、邮箱(要求用户输入的长度不超过 20 个字符,如果超过则只有前 20 个字符有效)如果用户输入 q 或 Q 表示不再继续输入,将用户输入的内容以表格形式显示
n = '' #定义一个空的变量
while True: #创建循环
yongHuMing = input('用户名:') #等待用户输入名称
if yongHuMing == 'q' or yongHuMing == 'Q': #比对用户输入的是否位 Q 或 q
break #如果是结束循环
else:
pass #否则什么都不做
yongHuMing = yongHuMing[0:20] #对用户输入的名字取20个字符
miMa = input('密码') #等待用户输入密码
if miMa == 'q' or miMa == 'Q': #比对用户输入的是否位 Q 或 q
break #如果是结束循环
else:
pass #否则什么都不做
miMa = miMa[0:20] #对用户输入的密码取20个字符
youXiangDiZhi = input('邮箱地址')
if youXiangDiZhi == 'q' or youXiangDiZhi == 'Q':
break
else:
pass
youXiangDiZhi = youXiangDiZhi[0:20]
# print(yongHuMing, miMa ,youXiangDiZhi) #打印用户名和密码
biaoTou = '用户名\t密码\t邮箱\n' #创建列标题
biaoTou = biaoTou.expandtabs(25) #完善列标题
print(biaoTou) #显示列标题
# v = 'yongHuMing\t miMa\t youXiangDiZhi\n'
biaoGeShuJu = "{x}\t{x1}\t{x2}\n" #创建表格数据模板
v = biaoGeShuJu.format(x = yongHuMing, x1 = miMa ,x2 = youXiangDiZhi) #将当前用户输入的值写入表格模板
n = n + v #将上一次用户的表格和这一次的相加
print(n.expandtabs(25)) #加工制表