数据类型(一):
本节知识内容:
- 整型
- 布尔类型
- 字符串
内容回顾和补充:
补充:
运算符补充:
in
value = "我是中国人" #判断“中国”是否在value所代指的字符串中,“中国”是否是value所代指的字符串的子序列。 v1 = "中国" in value #示例: content = input("请输入内容:") if "退钱" in content: print('包含敏感字符') #示例 while True: content = input('请输入内容:') if '退钱' in content: print('包含敏感字符') else: print(content) break
- not in
编码优先级补充:
注意:从上往下依次排列
运算符 描述 ** 指数(最高优先级) ~ + - 按位翻转,一元加号和减号(最后两个的方法名为+@和-@) * / % // 乘,除,取余,取整除 + - 加法 减法 >> << 右移,左移运算符 & 位'AND' ^ | 位运算符 <= < > >= 比较运算符 <> == != 等于运算符 = %= /= //= -= += *= **= 赋值运算符 is is not 身份运算符 in not in 成员运算符 not and or 逻辑运算符
第一节:整形(int)
整形(int)不同:
- py2中:
- 32位电脑:取值范围为-2 ** 31 ~ 2 ** 31-1,即-2147483648 ~ 2147483647
- 64位电脑:取值范围为-2 ** 63 ~ 2 ** 63-1,即-9223372036854775808 ~ 9223372036854775807
- 超出范围后就会变成long(长整型)
- py3中:
- 只有int类型,没有long类型,所有的数字全部为int
第二节:布尔类型(bool / boolen)
- 只有两个值:False / True
- 转换:
- 数字转布尔:0是False,其他都是True
- 字符串转布尔:""是False,其他都是True
第三节:字符串(str / string)
1.修改大小写
- 变量名.lower():字符串变小写
- 变量名.upper():字符串变大写
#验证码示例:用户输入的变量与验证码的变量全部变为小写 check_code = "UNFio" message = '请输入验证码%s:'%(check_code,) code = input(message) new_check_code = check_code.lower() message = message.lower() if code == new_check_code: print("登录成功") else: print("登录失败") #优化后代码: check_code= "UNFio" code = input('请输入验证码%s:'%(check_code,)) if code.lower() == check_code.lower(): print("登录成功") else: print("登录失败")
2.判断是否可以转换为int()类型
- 变量名.isdigit():判断是否可以转换为数字类型
#电话问答,只能输入数字1,2,3,如果不是,请重新输入 print("""欢迎致电10086: 1.话费查询 2.业务办理 3.增值服务 """) while True: num = input("请输入数字:") flage = num.isdigit() #判断num变量是否为整数 if flage ==True: num = int(num) while num in {1,2,3}: if num == 1: print("话费查询") break elif num == 2: print("业务办理") break elif num == 3: print("增值服务") break else: print("请输入1,2,3") continue else: print("看清楚,输入数字,输入其他无效") continue break
3.去除空白:
- 变量名.lstrip():去除左边空格
- 变量名.rstrip():去除右边空格
- 变量名.strip():去除两边空格
user = input("请输入用户名:") new_user1 = user.rstrip() #user去除右空格,赋值给new_user1 new_user2 = new_user1.lstrip() #new_user1去除左空格,赋值给new_user2 data = new_user2.upper() #new_user2全部变为大写,赋值给data print("---->",data,"<---") #输入 eiiol 结果为:----> EIIOL <---
4.替换关键字:
变量名.replace('关键字','替换后的内容',次数)
message = input("请输入用户名:") #输入:我去你大爷家里玩,去你大爷的,大爷大妈们好和蔼 new_message_1 = message.replace("大爷","**") new_message_2 = message.replace("大爷","**",2) print(new_message_1) print(new_message_2) """结果为: 我去你**家里玩,去你**的,**大妈们好和蔼 我去你**家里玩,去你**的,大爷大妈们好和蔼 """
5.切割:split / rsplit
- 变量名.split("以关键字符切割",次数):从左向右依次切割
- 变量名.rsplit("以关键字符切割",次数):从右向左依次切割
message = ("我想陪你去看电影,牵着你的手去逛街,还想带你去旅游") new_message_1 = message.split(",") new_message_2 = message.split(",",1) new_message_3 = message.rsplit(",",1) print(new_message_1) print(new_message_2) print(new_message_3) """输出结果为: ['我想陪你去看电影', '牵着你的手去逛街', '还想带你去旅游'] ['我想陪你去看电影', '牵着你的手去逛街,还想带你去旅游'] ['我想陪你去看电影,牵着你的手去逛街', '还想带你去旅游'] """
6.判断是否已关键字开头 / 结尾:startswitch / endswitch
变量名.startswitch("关键字"):已关键字开头
变量名.endswitch("关键字"):已关键字结尾
name = input("请输入字母") #判断是否已ya开头 flag = name.startswith("ya") flag = name.endswith("ya") print(flag) val = name[0:2] if val == "ya": print("已ya开头") else: print("不是已ya开头")
7.字符串格式化:format
"变量{0}{1}{2}".format("0",1,2,):后面format大括号内参数传参到前面
name = "我是{0},今年{1}岁".format("yanan",28) print(name)
8.字符串转换其他编码:encode
- 变量名.encode("要转变的编码类型") :解释器读取到内存后,按照unicode存储:两个字八个字节
name = "李亚楠" v1 = name.encode("utf-8") print(v1) v2 = name.encode("gbk") print(v2)
9.字符串中循环加入连接符:join
"字符".join(变量名):循环每个元素,并在元素和元素之间加入连接符
name = "yanan" reset_name = "_".join(name) print(reset_name) #结果为y_a_n_a_n
第四节:切片&分组
- len(变量名):计算变量名字符串的长度
message = ("我想陪你去看电影,牵着你的手去逛街,还想带你去旅游") num = len(message) print(num) #结果为25
- 变量名[下标]:索引取值
v = "yanan" v[0] #print(v[0])的结果为y v[-1] #从后往前取
text = input("请输入:") num = len(text) index = 0 total = 0 while True: message = text[index] if message.isdigit(): print(message) total += 1 if index == num - 1: break index += 1 print(total)
- 切片
下标从0开始,前取后不取,负数是从后往前数,-1为最后一个字符
- 注意不能从后往前取,只能从前往后取!!!!
v = "liyanan" v1 = v[2:4] #取出ya v2 = v[3:7] #取出anan v3 = v[3:-1] #取出ana v4 = v[3:] #取出anan v5 = v[:-2] #取出liyan v6 = v[-1:-2] #无法取出 v7 = v[-1:1] #无法取出
len()赋值给变量,用变量取下标,应用更灵活
text = input("请输入:") num = len(text) if num >=5 : #判断输入的字符串是否大于等于5 new_text = text[-2:] #取最后两个字符 new_text_1=text[num-2:num] #用变量表示下标,取最后两个字符 print(new_text,new_text_1) else: print(text)
步长:
根据步长的长度,跨越取字符:
- 正数是从前往后的步长
- 负数是从后往前的步长
name = "liyanan" val = name[::2] #取出lynn val = name[0:4:2] #取出lyn val = name[::-1] #取出nanayil(字符串的反转)
第五节:for循环
for和while的使用场景:(有穷尽优先使用for循环,无穷尽优先使用while循环。不是绝对的)
#for循环打印"yanan"的每个元素: name = "yanan" for i in name: print(i) #打印1-10的数字,使用range(1,11) = [1,2,3,4,5,6,7,8,9,10] for i in range(1,11): print(i) #打印1-10的数字,排除7不打印 for i in range(1,11): if i ==7: pass else: print(i)