Python基础三(数据类型之字符串常用方法、for循环)
一、重点练习题问题点解疑
问题点一
8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和? count = 1 sum = 0 while count < 100 : if count % 2 == 0: sum -= count if count == 88: sum = sum + 88 else: sum += count count += 1 print(sum)
以上是自己所写代码,错误理解题意。
# 8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88意外所有数的总和? count = 0 sum = 0 while count < 99: count += 1 if count == 88: continue if count % 2 == 0: sum -= count else: sum += count print(sum)
第二种是正确写法,主要体现在count==88时,需要跳过(这里使用continue),再继续下次循环。需要拓宽解题思路。
问题点二
9. 用户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使字符串格式化) count = 1 while count < 4: name = input('请输入姓名:') password = input('请输入密码:') if name == 'gxy'and password == '123': print('登录成功') break else: print('请重新输入,剩余%d'%(3-count)) count += 1 if count == 4: anwer = input('是否想再试试/y:') if anwer == 'y': count = 1 else:print('你傻不傻')
注意:这里使用到知识点是使字符串格式化,将剩余次数和count练习起来。
二、整体初始数据类型
一、int (数字)1,2,3,.. :主要是用于计算
i = 4 print(i.bit_length())
0 0000 0000
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
输出结果为3
注:i.bit_length()表示数字转化成二进制所占用的位数
二、字符串(str)
s1 = 'alex'
存储少量的数据,便于操作.
三、布尔(bool)
只表示判断 输出True False.
四、tuple 元组
(1,'alex',True,[ ],dict)可以含有数字、字符串、布尔列表字典等
只读列表,不能更改
五、list列表
[1,'alex',True,[1,2,3],dict]
可承载大量的数据,
六、字典dict
{'name':'alex',
'age':54,
'python10':[化工哥,小白,小黑,萌哥,,花哥,娶哥,阎王]
}
1,可存储大量数据,
2,关联型数据.
3,查找数据非常快.
三、int bool str三者之间的转换
1、数字、字符串之间的转换
int ----> str str(int)
str ----> int int(str) 只能是数字组成的字符串
2、数字、布尔之间的转换
int ----> bool 0 Fasle 非零 True
i = bool(3) print(i)-----Ture i = bool(0) print(i)----False
bool ----> int T ---> 1 F --->0
i = int(True) print(i)------1 i = int(False) print(i)------0
if 1 : print('aaa')------1即为Ture,输出结果为aaa
if 0 :
print('aaa')-----0即为False,不输出结果
注:while True: 与 while 1 :相比,while 1: 执行效率高
3、字符串与布尔之间的转换
str ---> bool 非空 True 空就是False
bool ----> str str(True) str(False)
s = '' s1 = ' 1 ' print(bool(s)) # 空是False print(bool(s1)) # 非空是True print(str(True),type(str(True))) ----- 输出 True <class 'str'>
四、字符串操作
一、字符串的索引与切片
索引即下标,就是字符串组成的元素从第一个开始的,有顺序的,初始索引为0以此类推
s = 'alex wusir ritian' #str 有顺序,并且有索引,索引是从0开始 s1 = s[0] print(s1,type(s1))---a s2 = s[2] print(s2,type(s2))---e s3 = s[-1] print(s3)-----n,-1即倒序 s4 = s[-2] print(s4)----a
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)
s = 'alex wusir ritian' s5 = s[0:4] print(s5)----alex s6 = s[2:6] print(s6)----ex w s7 = s[5:] print(s7)----wusir ritian s8 = s[0:]-----全部打印 s81 = s[:]-----全部打印
二、字符串的常用方法
步长:
s = 'alex wusir ritian'
[起始索引:终止索引:步长] s9 = s[0:3:2] print(s9)-----ae
倒序:
s = 'alex wusir ritian'
s10 = s[-1:-6:-1] print(s10)-----naiti
s11 = s[3:0:-2]
print(s11)----xl
s12 = s[2::-2]
print(s12)----ea
常用方法
1、s = 'alex wuSir' *capitalize()首字母大写,其他字母小写 print(s.capitalize()) 2、*swapcase()大小写反转 print(s.swapcase()) 3、非字母隔开的部分,首字母大写,其他小写 s = 'alex wuSir1taibai*ritian' print(s.title()) 4、s = 'alexawuSir' ***upper 全部大写-----用于验证码或密码登录验证 ***lower 全部小写 print(s.upper()) print(s.lower()) code = 'aeDd' your_code = input('请输入验证码:') if your_code.upper() == code.upper(): print('输入正确') else:print('请重新输入') 重要重要重要重要重要重要重要重要重要重要 5、*以什么居中,填充物默认空 print(s.center(20)) print(s.center(20,'*')) 6、s = 'al\tex wuSir' print(s.expandtabs())-------补全\前8位,够8位的补全16位 7、***find()通过元素找索引,可以整体找,可以切片,找不到返回-1------优先选用 index()通过元素找索引,可以整体找,可以切片,找不到会报错 print(s.find('a'),type(s.find('a'))) print(s.find('alex'),type(s.find('a'))) print(s.find('a')) print(s.find('a',1,5)) print(s.find('L')) print(s.index('L')) 重要重要重要重要重要重要重要重要重要重要 8、s = 'alex wusir' *** startswith endswith print(s.startswith('a')) print(s.startswith('al')) print(s.startswith('w',5)) print(s.startswith('W',5)) print('adfads\n','fdsa') print(s) 重要重要重要重要重要重要重要重要重要重要 9、s = '\talex wusir\n' s1 = 'alalelllllllxwusirbl' *****strip 去除字符串前后两端的空格,换行符,tab键等 print(s.strip()) print(s.lstrip()) print(s.rstrip()) print(s1.strip('lab')) name = input('请输入名字:').strip() if name == 'alex': print('somebody') else:print('请重新输入') 重要重要重要重要重要重要重要重要重要重要 10、s = 'alex;wusir;ritian' s1 = 'alexalaria' ******split str --->list方法 print(s.split(';')) print(s.split(';')) print(s1.split('a',1)) 重要重要重要重要重要重要重要重要重要重要 11、replace ****** s1 = '姐弟俩一起来老男孩老男孩老男孩' s2 = s1.replace('老','小',1)------不输入1,默认全部替换 print(s2) 重要重要重要重要重要重要重要重要重要重要 12、name='jinxin123' print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isdigit()) #字符串只由数字组成
13、*********format*********十分重要十分重要十分重要十分重要 第一种 s = '我叫{},今年{},身高{}'.format('金鑫',21,175) print(s) 第二种 s = '我叫{0},今年{1},身高{2},我依然叫{0}'.format('金鑫',21,175) print(s) 第三种 s = '我叫{name},今年{age},身高{high}'.format(name = '金鑫',high=175,age=21)
14、count 计算元素出现的次数 s = 'alexaaaaa wusir' print(s.count('a'))----6个a,输出 6 15、len()计算字符串的宽度 s = 'alex' print(len(s))-----输出4
五、for 循环
for循环:用户按照顺序循环可迭代对象的内容
与while区别,for是有限循环
依次输出字符串中的每个元素
旧办法 s = 'salffdsafdsag' count = 0 while count < len(s): print(s[count]) count += 1 新办法 for i in s: print(i)