int,str,bool,for循环
今日内容:
一、基本数据类型:
1.int
数字操作只有+-*/,//,%,**
bit_length() #查询二进制长度
2.str的相关操作:
str可以把任何类型的数据(字典,元组,列表,集合)强行转换成字符串给引起来,这样就方便了文件的写入.(写入一个文本,必须是字符串类型!),但是反过来就不行.只能用eval()函数.注意eval()函数,有返回值,改的谁,谁来接收.
#str没有clear(),remove(),pop()方法,字符串不能被修改,但是字符串的变量名可以重新赋值,所以replace()方法修改字符串只是把字符串的变量名从新赋值了,字符串其实没有变.
content="123" print(id(content)) content[0].replace("1","haha") print(content[0]) print(id(content))
format() 函数可以接受不限参数,位置可以不按顺序
"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 输出结果为:'hello world' "{0} {1}".format("hello", "world") # 设置指定位置 输出结果为:'hello world' "{1} {0} {1}".format("hello", "world") # 设置指定位置 输出结果为:'world hello world'
一:切片(顾头不顾尾),被'或者"或者"""括起来的内容
s[start:end:step] start:开始 end: 结束 #顾头不顾尾 step: 步长, 控制方向. 每xx个取一个
二:索引(这个题比较经典)
s = "默念哥没吃饭哥不说话" print(s[3::-3]) #end参数默认是0,全部,但是没有指向那个方向.所以注意step方向! 输出结果为:没默
upper() #全部改大写 之"输入验证码"
verifyCode = "aEmn" veri = input("请输入验证码(%s)"%verifyCode) if veri.upper() ==verifyCode.upper(): print("验证码正确") else: print("验证码错误")
count() #计数
lower() #全部改小写,不支持部分特殊字符
capitalize() #开头改大写
center() #居中
casefold() #全部改小写,支持特殊字符
s = "alex" s6 = s.center(10,"_")#长度,用_填充 print(s6)
strip(x) #去两端空白 (包括空格,,\t,\n),中间的内容不会动,可指定要删除的左右两边的内容.应用场景,防止出现商业纠纷.由于用户输正确账号密码后输空格会出现登陆错误,就会找你的问题,不太好看出BUG在哪里.这个方法就防止了问题的发生.
uname = input("请输入你的用户名:").strip()#干掉用户的空格 upws = input("请输入你的密码:").strip()#干掉用户的空格 if uname =="alex" and upws == "123": print("登陆成功") else: print("登陆失败")
replace(old,new) #替换 有返回值,需要接收,返回类型为原类型
s = "good alex good hello" s1 = s.replace("good","will") print(s1)
split()#字符串切割,有返回值,需要接收,返回类型为列表
s = "哈哈哈哈" s2 = s.split("哈") #切出来的结果会放到一个列表中 print(s2)
结果是:['', '', '', '']
starswith()#判断字符串是否以什么开头
s = "python,哈哈,六六六" print(s.startswith("python"))
输出结果为:True
endswith() #以什么结尾
find(str,beg,end)和index()的使用 #查找某个元素的下标, find方法找不到会返回-1;而index会报错
s = "滋滋冒油的猪蹄子" #print(s.find("冒油")) #输出结果为:-1 print(s.index("哈哈")) 输出结果为:报错
isalpha()判断是否全部由字母组成,不包括数字,空格,但包括中文.
s = "alexwusir" print(s.isalpha())
isdigit()和isnumeric() #是否都是数字组成.前者识别阿拉伯数字,后者还能识别中文的阿拉伯数字
s = "123456" print(s.isdigit()) 输出结果为:True s = "123一二仟" print(s.isnumeric()) 输出结果为:True
3.bool
print(bool("哈哈"))#True print(bool(" ")) #空格是True print(bool(""))#字符串是False 结论为:所有的空都可以表示False print(bool([]))#False 空列表 print(bool({})#False 空字典 print(bool(set()))#False 空集合
4.list
5.tuple
6.dict
7.set
8.bytes
=========================
#补充
for循环.
for 变量 in 可迭代对象: 缩进+循环体 for c in s: #用变量 c 遍历(迭代)字符串 s print(c)
#for循环有一个先决条件,就是in后面必须是可迭代对象,(数字不可迭代)
for :不确定范围时,(str,list,dic,tuple,set)
for 循环里不要做删除,因为会错位,出现意外,但是可以做替换replace()
lst = ["ni hao","wo hao","ta hao"] for i in range(len(lst)): if lst[i] =="ni hao": lst[i] = lst[i].replace("ni hao","123") print(lst)
如何用for循环方法删除:迭代新列表,删除就列表
a = [] b = ["你好,我好,他也好","好的,真好","这些话都是真的啊?"] for i in b: a.append(i) print(a) #现在里面内容跟b一致 for c in a: if c=="好的,真好": b.remove(c) print(b)
for 循环中允许使用continue()
lis = ["nihao","wohao","tayehao"] for i in lis: if i=="wohao": continue else: print(i) 输出为:nihao tayehao
while:不确定循环次数
------------------------------------------------------------------------------------
关于python中各类方法有没有返回值的问题:
简单的来说除了count、index、copy、pop、sedefault外其他的方法都没有返回值,而且特别强调的是,copy返回的是该列表的值(若将该返回值复制给另外一个变量,则效果是对原列表的一个浅复制,即新的变量完成了对原列表的引用。python3中已经列表和字典的copy方法已经不存在浅复制的问题了,通过实践验证,采用copy得到的副本和原件之间不存在相互影响的问题),pop则是唯一的一个既原地修改原列表又能返回值的方法。
---------------------