1、昨日作业讲解
1)简述ASCII码,unicode码,utf-8之间的编码关系?
ASCII码只能显示英文,符号,数字,占1个字节
unicode是万国码,占4个字节
utf-8英文占1个字节,欧洲占2个字节,亚洲占3个字节
utf-8是基于unicode开发的,unicode是基于ASCII开发的
2)计算1-2+3...+99中除了88以外所有数的总和
i = 1 sum = 0 while i < 100: if i == 88: i += 1 continue if i % 2 ==0: sum -= i else: sum += i i += 1 print(sum)
i = 0 j = -1 sum = 0 while i < 99: i += 1 j = -j if i == 88: continue sum += i*j print(sum)
3)等待用户输入内容,检测用户输入内容中是否包含敏感字符?如果存在敏感字符,提示:存在敏感字符,请重新输入,并允许用户重新输入并打印。敏感字符:小粉嫩,大铁锤
mg_1 = "小粉嫩" mg_2 = "大铁锤" text = " " flag = 1 while 1: text = input("请输入搜索内容:") if mg_1 not in text: if mg_2 not in text: break else: print("存在敏感字符,请重新输入!") continue else: print("存在敏感字符,请重新输入!") continue print(text)
2、数据类型
1)数据类型综述
int 算术数据,常用于计算
bool 布尔数据,常用于判断
str 字符串数据,常用于存储少量数据,并进行操作
list 列表数据,常用于存储大量的数据
元祖 只读列表,即数据可以被查询,但不能被修改,字符串的切片操作同样适用于元祖
dict 字典,Python中唯一的映射类型,采用键值对的形式存储数据
集合 区间运算,不常用
2)int类型
主要用于数字的算术运算
# bit_length() 当十进制用二进制表示时,最少使用的位数 i = 11 data = i.bit_length() print(data)
3)bool类型
布尔运算,反映条件是否成立
True or False
4)str类型
4.1)字符串的索引与切片
字符串a[索引:切片:步长] 切片原则:顾头不顾尾
截取字符串的一段,形成新的字符串
a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" print(a[0:3]) # 顾头不顾尾 print(a[3:7]) # 顾头不顾尾 print(a[18:]) # 默认到最后 print(a[18:-1]) # -1就是最后一位 print(a[18:26:2]) # 加步长 print(a[26:18:-2]) # 反向加步长
4.2)字符串的常用操作
4.2.1)字母大小写类
name = "Shark Jiao and Lily" print(name.capitalize()) # Shark jiao and lily 【首字母大写】 print(name.upper()) # SHARK JIAO AND LILY 【全部大写】 print(name.lower()) # shark jiao and lily 【全部小写】 print(name.swapcase()) # sHARK jIAO AND lILY 【大小写翻转】 print(name.title()) # Shark Jiao And Lily 【每个隔开的单词首字母大写】
4.2.2)文本类
name = " Shark Jiao and Lily" print(name.center(24,"*")) # **Shark Jiao and Lily*** 【居中,总长度,空白处填充】 print(name.expandtabs()) # Shark Jiao and Lily 【默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。】
4.2.3)查找类
name = "Shark Jiao and Lily" print(name.startswith('a',2,8)) # True 【判断是否以...开头,顾头不顾尾】 print(name.endswith('a',2,9)) # True 【判断是否以...结尾,顾头不顾尾】 print(name.find('a')) # 2 【查询元素,返回下标索引,找不到返回-1】 print(name.index('a')) # 2 【查询元素,返回下标索引,找不到报错】
4.2.4)过滤类
name = " Shark Jiao and Lily " print(name.strip()) # Shark Jiao and Lily 【默认去除前后空格,可添加符号】 print(name.rstrip()) # Shark Jiao and Lily 【默认去除右边空格,可添加符号】 print(name.lstrip()) # Shark Jiao and Lily 【默认去除左边空格,可添加符号】
4.2.5)计数类
name = "Shark Jiao and Lily" print(name.count('a')) # 3 【计数字符串中元素的个数】 print(len(name)) # 19 【计数字符串的长度】
4.2.6)拆分类
name = "Shark Jiao and Lily" print(name.split(' ')) # ['Shark', 'Jiao', 'and', 'Lily'] 【使字符串拆分为列表】 print(name.replace('Shark','Python')) # Python Jiao and Lily 【字符替换】
4.2.7)格式化输出
print('我叫{},今年{}岁,我是{}生,{}欢迎你来到异世界!'.format('SharkJiao',18,'男','SharkJiao')) print('我叫{0},今年{1}岁,我是{2}生,{0}欢迎你来到异世界!'.format('SharkJiao',18,'男')) print('我叫{name},今年{age}岁,我是{sex}生,{name}欢迎你来到异世界!'.format(name = "SharkJiao",sex = "男",age = 18))
4.2.8)is系列
name = 'SharkJiao' print(name.isalnum()) # 字符串由字母或数字组成 print(name.isalpha()) # 字符串只由字母组成 print(name.isdigit()) # 字符串只由数字组成
4.2.9)应用案例
# 验证码应用 s_str = 'acEQ' you_input = input('请输入验证码,不区分大小写') if s_str.upper() == you_input.upper(): print('输入成功!') else: print('请重新输入...')
3、for循环
# for...in... s = 'SharkJiao' for i in s: print(i)
# for...in... # 顾头不顾尾 for i in range(1,10): print(i)
# for...in... # 顾头不顾尾 for i in range(1,10,2): print(i)
# for...in... # 顾头不顾尾 for i in range(10,1,-2): print(i)
# for...in... s = '我们是共产主义接班人!' if '共产主义' in s: print('您的输入存在敏感词...')
4、数据类型转换
# int ----> str i = 1 s = str(i) print(type(i),type(s)) # <class 'int'> <class 'str'>
# str ----> int i = '123' s = int(i) print(type(i),type(s)) # <class 'str'> <class 'int'>
# int ----> bool i = 1 s = bool(i) print(type(i),type(s)) # <class 'int'> <class 'bool'>
# bool ----> int i = True s = int(i) print(type(i),type(s)) # <class 'bool'> <class 'int'>
# str ----> bool i = '1' s = bool(i) print(type(i),type(s)) # <class 'str'> <class 'bool'>
# bool ----> str i = True s = str(i) print(type(i),type(s)) # <class 'bool'> <class 'str'>
# s = '' ----> False # 非空字符串都是True # s = '0' ----> True s = '' if s: print('您的输入为空,请重新输入...') else: pass
5、相关练习
name = "aleX leNb" # 1、移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip()) # 2、移除 name 变量左边的'al',并输出处理结果 print(name[2:]) # 3、移除 name 变量右边的'Nb',并输出处理结果 print(name[0:7]) # 4、移除 name 变量开头的'a'与最后的'b',并输出处理结果 print(name[1:8]) # 5、判断 name 变量是否以'al'开头,并输出结果 print(name.startswith('al')) # 6、判断 name 变量是否以'Nb'结尾,并输出结果 print(name.endswith('Nb')) # 7、将 name 变量对应的值中的所有的'l'替换为'p',并输出结果 print(name.replace('l','p')) # 8、将 name 变量对应的值中的第一个'l'替换成'p',并输出结果 print(name.replace('l','p',1)) # 9、将 name 变量对应的值根据所有的'l'分割,并输出结果 print(name.split('l')) # 10、将 name 变量对应的值根据第一个'l'分割,并输出结果 print(name.split('l',1)) # 11、将 name 变量对应的值变大写,并输出结果 print(name.upper()) # 12、将 name 变量对应的值变小写,并输出结果 print(name.lower()) # 13、将 name 变量对应的值首字母'a'大写,并输出结果 print(name.capitalize()) # 14、判断 name 变量对应的值字母'l'出现次数,并输出结果 print(name.count('l')) # 15、如果判断 name 变量对应的值前四位'l'出现几次,并输出结果 print(name[0:4].count('l')) # 16、从 name 变量对应的值中找到'N‘对应的索引(如果找不到则报错),并输出结果 print(name.index('N')) # 17、从 name 变量对应的值中找到'N‘对应的索引(如果找不到则返回-1),并输出结果 print(name.find('N')) # 18、从 name 变量对应的值中找到'X le'对应的索引,并输出结果 print(name.find('X le')) # 19、请输出 name 变量对应的值的第2个字符,并输出结果 print(name[1:2]) # 20、请输出 name 变量对应的值的前3个字符,并输出结果 print(name[:3]) # 21、请输出 name 变量对应的值的后2个字符,并输出结果 print(name[-2:]) # 22、请输出 name 变量对应的值中'e'所在索引位置,并输出结果 i = 0 str = name while i < name.count('e'): print(str.find('e')) str = str.replace('e','a',1) i += 1
s = '132a4b5c' # 1、通过对li列表的切片形成新的字符串s1,s1 = '123' s1 = s[s.index('1')] + s[s.index('3')] + s[s.index('2')] print(s1) # 2、通过对li列表的切片形成新的字符串s2,s2 = 'a4b' s21 = s.split('2') s22 = s21[1].split('5') s2 = s22[0] print(s2) # 3、通过对li列表的切片形成新的字符串s3,s3 = '1245' s3 = s[0::2] print(s3) # 4、通过对li列表的切片形成新的字符串s4,s4 = '3ab' s4 = s[1:6:2] print(s4) # 5、通过对li列表的切片形成新的字符串s5,s5 = 'c' s5 = s[-1] print(s5) # 6、通过对li列表的切片形成新的字符串s6,s6 = 'ba3' s6 = s[-3:-8:-2] print(s6)
# 使用while循环打印字符串s='asdfer'中的每个元素 s = 'asdfer' i = 0 while i < len(s): print(s[i]) i += 1
# 使用for循环打印字符串s='asdfer'中的每个元素 for i in s: print(i)
# 实现一个整数加法计算器,如:content = input('请输入内容:') # 如用户输入:5+9或者5+ 9或者5 +9,然后进行分割,再进行计算 content = input('请输入内容:') str = content.split('+') i = 0 sum = 0 while i < len(str): str[i] = int(str[i].strip()) sum += str[i] i += 1 print(sum)
# 计算用户输入的内容中有几个整数 # 如:content = input('请输入内容:) # 如:fhdal234slfh98769fjdla content = input('请输入内容:') i = 0 sum = 0 while i < len(content): if content[i].isdigit(): sum += 1 i += 1 print(sum)