###最主要学习内容(记忆偏多)
str \\ list \\ bytes \\ dict \\ 运算符 \\ 文件操作
1、基础数据类型
float :小数,浮点数
计算机表示小数是会有误差的,主要是看自己能不能接受这个误差,如果不可以,需要想其他的方法来解决。
#bool:用来做条件判断的,取值范围:True,False
#基础数据类型之间的转化
a = 10
b = bool(a)
print(type(b))
print(b)
在python中,所有非零的数字都是True,零是False;所有的非空字符串都是True,空字符串都是False
综上,在python中,表示空的东西都是False,不空的东西都是True
可以在这里进行应用:
#str: 把字符连成串,' '," ","' "'引起来的内容被称为字符串
(1)
索引:!!!下标从0开始!!!
str | 我 | 喜 | 欢 | 你 |
正序 | 0 | 1 | 2 | 3 |
倒序 | -4 | -3 | -2 | -1 |
所以,s[3] = s[-1]
切片:可以使用下标来截取部分字符串的内容
基本语法:str[start : end : step]
规则:顾头不顾尾,从start开始截取,截取到end位置,但不包括end
步长: 每几个出来1个, 步长如果为负数,从右向左取,如果是正数,就从左向右取
print(s[1:4]) #end的数据取不到 [start,end] print(s[3:]) #后面什么都不写,表示切到末尾 print(s[:3]) #前面什么都不写,表示从头开始切
练习1:
回文:上海自来水来自海上
让用户随便输入一句话,判断这句话是否是回文
思路:把这句话倒过来,和原来这句话对比是否相等就可以了
输入: content = input("请输入字符串:") s = content[::-1] #从右向左切,从头切到尾 if s == content: print("是回文") else: print("不是回文")
输出:
请输入字符串:<<<-
不是回文
请输入字符串:上海自来水来自海上
是回文
(2)
大小写转换:字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响的,所以一定要用变量去接收变换后的字符串。
s.capitalize() #首字母变成大写
s.upper() #全部字母变成大写,可以应用在忽略大小写(忽略大小写时,经常用upper(),因为lower()支持的转小写的比较少,因此更多的用upper())
s.lower() #全部字母变成小写
s.title() #每个单词首字母大写
s = "i am Jing,I Love You" s1 = s.capitalize() print(s1) s2 = s.lower() print(s2) s3 = s.upper() print(s3)
(3)
切来切去
s.strip() #默认是去掉字符串左右两端的空白 (空格、\t,\n) ,但是字符串里的空白是不会去掉的
常用于用户名、密码输入,后面多加入了空格,但是登录的时候,视觉上不会显示出来,因此需要用strip(),来去除字符串左右两端的空白
username = input("请输入用户名:") password = input("请输入密码:") if username == "admin" and password == "123": #如果用户实际上输入了“admin " print("登录成功!") else: print("登录失败!")
结果:
修改方案:
username = input("请输入用户名:").strip() #去除字符串两端的 空格 \t \n password = input("请输入密码:").strip() if username == "admin" and password == "123": #如果用户实际上输入了“admin ",也不会影响登录 print("登录成功!") else: print("登录失败!")
结果:
strip(),还可以用于去掉其他字符
s = "sb_sylar_ssb" print(s.strip("sb"))
结果:
replace() #字符串替换
s = "我特别喜欢黄曦彦" print(s.replace("黄曦彦","***")) #请去掉一句话中所有的空格 s1 = " 我 爱 你 喜喜" print(s1.replace(" ",""))
结果:
split() #字符串切割,在进行数据爬取时,得到的数据会进行切割
s = "张万森_黄曦彦_朴智旻" print(s.split("_")) #通过_切割,会得到很多个字符串,会以列表方式进行储存
结果:
join() # 把一个列表组合成一个字符串
lst = ['张万森', '黄曦彦', '朴智旻'] s = "_爱_".join(lst) print(s)
结果:
查找:
startswith():判断字符串是否以()开头
endswith(): 判断字符串是否以()结尾
name = input("请输入姓名:") if name.startswith("张"): print("YES") else: print("No") weather = input("请输入今天的天气如何:") print(weather.endswith("不错")) print(weather.endswith("很差"))
count() :判断字符串里出现了多少个***,如果没有就返回0
s = "python_java_php_ajex" print(s.count("a")) #计算字符串中出现了多少个***
结果:
find(): 查找字符串,如果找到了就返回索引,找不到-1
s = "我最喜欢python了" print(s.find("哈")) print(s.find("python"))
结果: index():几乎与find()功能相同,与find()不同的是,如果没有找到会直接报错,而find(),不会直接报错,会返回-1
len():#求字符串长度。上来直接就能用的函数被称为内置函数,print,input,type,dir
s = "abc" a = len(s) print(a)
结果:
迭代:一般可以用while(),但是for()更简洁
s = "今天晚上吃什么呢" for c in s: print(c)
结果:
2、while
也可以在while中套if语句
flag = True while flag: content = input("请输入您要说的话(Q退出):") if content == 'Q': flag = False else: print("有人说了:"+ content)
把while循环的条件,用变量来控制,后期如果要跳出的话,就可以直接更改变量的值
结束循环的方式1:改变循环条件
流程控制:break,continue
break:结束这个循环
continue:结束当前本次循环,继续执行下一次循环(跳过执行)
结束循环的方式2:使用break,continue