流程控制以及数据类型
一、流程控制之for循环
1.什么是for循环
循环就是重复做某件事,for循环是python提供第二种循环机制
2.为什么要有for循环
理论上for循环能做的事情,while循环都可以做之所以要有for循环,是因为for循环在循环取值(遍历取值)比while循环更简洁
3.如何用for循环
语法:
for 变量名 in 可迭代对象:# 可迭代对象可以是:列表、字典、字符串、元组、集合
代码1
代码2
代码3
3.1 基本语法之取值
列表取值:
l = ['alex', 'lxx', 'egon'] for x in l: # x='lxx' print(x)
字典取值:
dic={'k1':111,'k2':2222,'k3':333} for k in dic: print(k,dic[k])
字符串取值:
msg="abcdefghijklmn" for x in msg: print(x)
3.2 while循环与for循环的区别
1、相同之处:都是循环,for循环可以干的事,while循环也可以干 2、不同之处: while循环称之为条件循环,循环次数取决于条件何时变为假 for循环称之为"取值循环",循环次数取决in后包含的值的个数
3.3 range()用法
for i in range(0,100,2) 可以指定起始值,终止位置,步长(顾头不顾尾) print(i)
3.4 for+break for+contiune for+else
三者用法和while一样
3.5 循环嵌套
for i in range(3): print('外层循环-->', i) for j in range(5): print('内层-->', j) 补充:终止for循环只有break一种方案
二、数字类型
1.int类型
1.1 作用:用来记录年龄,年份,电话号码等等
1.2 定义:
age = 18
age = int(18)
2.float类型
2.1 作用:用来记录薪资,身高,体重,体质参数等
2.2 定义:
height = 180.5
height = float(180.5)
3.字符串类型
3.1 作用:用来记录名字,性别,国籍,地址等等
3.2 定义:
a = 'hahaha' a = str('hahaha')
3.3 内置方法
1. 索引取值
按索引取值(正向取+反向取) :只能取 msg='hello world' # 正向取 print(msg[0]) print(msg[5]) # 反向取 print(msg[-1]) # 只能取 msg[0]='H'
2. 切片取值(顾头不顾尾)
msg='hello world' # 顾头不顾尾 res=msg[0:5] #x print(res) print(msg) # 步长 res=msg[0:5:2] # 0 2 4 print(res) # hlo # 反向步长(了解) res=msg[5:0:-1] print(res) #" olle" msg='hello world' res=msg[:] # res=msg[0:11] print(res) res=msg[::-1] # 把字符串倒过来 print(res)
3. 长度len()
msg='hello' print(len(msg))
4. in 和 not in
判断一个子字符串是否存在于一个大字符串中 print("alex" in "alex is nb") print("alex" not in "alex is nb")
5. 移除字符串左右两侧空格 strip
msg=' egon ' res=msg.strip() print(msg) # 不会改变原值 print(res) # 是产生了新值 默认去掉的空格 msg='****egon****' print(msg.strip('*')) 了解:strip只取两边,不去中间 msg='****e*****gon****' print(msg.strip('*')) msg='**/*=-**egon**-=()**' print(msg.strip('*/-=()'))
6.切分 split 得到列表
# 默认分隔符是空格 info='egon 18 male' res=info.split() print(res) # 指定分隔符 info='egon:18:male' res=info.split(':') print(res) 指定分隔次数(了解) info='egon:18:male' res=info.split(':',1) print(res)
7.循环
info='egon:18:male' for x in info: print(x)
需要掌握的操作
1.strip,lstrip,rstrip
msg='***egon****' print(msg.strip('*')) print(msg.lstrip('*')) 去左边 print(msg.rstrip('*')) 去右边
2.lower,upper
msg='AbbbCCCC' print(msg.lower()) print(msg.upper())
3.startswith,endswith
print("alex is sb".startswith("alex")) print("alex is sb".endswith('sb'))
4.format
res='{} {} {}'.format('egon',18,'male') res='{1} {0} {1}'.format('egon',18,'male') res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
5.split,rsplit
name='root:x:0:0::/root:/bin/bash' print(name.split(':')) #默认分隔符为空格 name='C:/a/b/c/d.txt' #只想拿到顶级目录 print(name.split('/',1)) name='a|b|c' print(name.rsplit('|',1)) #从右开始切分
6.join
tag=' ' print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串
7.replace
name='alex say :i have one tesla,my name is alex' print(name.replace('alex','nb',1))
8.isdigit
可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法 age=input('>>: ') print(age.isdigit())
其他
1.find,rfind,index,rindex,count
name='egon say hello' print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引 # print(name.index('e',2,4)) #同上,但是找不到会报错 print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有
2.center,ljust,rjust,zfill
name='egon' print(name.center(30,'-')) print(name.ljust(30,'*')) print(name.rjust(30,'*')) print(name.zfill(50)) #用0填充
3.expandtabs
name='egon\thello' print(name) print(name.expandtabs(1)) 设置制表符代表的空格数为1
4.captalize,swapcase,title
print(name.capitalize()) #首字母大写 print(name.swapcase()) #大小写翻转 msg='egon say hi' print(msg.title()) #每个单词的首字母大写
5.is数字系列
#在python3中 num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='四' #中文数字 num4='Ⅳ' #罗马数字 #isdigt:bytes,unicode print(num1.isdigit()) #True print(num2.isdigit()) #True print(num3.isdigit()) #False print(num4.isdigit()) #False #isdecimal:uncicode #bytes类型无isdecimal方法 print(num2.isdecimal()) #True print(num3.isdecimal()) #False print(num4.isdecimal()) #False #isnumberic:unicode,中文数字,罗马数字 #bytes类型无isnumberic方法 print(num2.isnumeric()) #True print(num3.isnumeric()) #True print(num4.isnumeric()) #True #三者不能判断浮点数 num5='4.3' print(num5.isdigit()) print(num5.isdecimal()) print(num5.isnumeric()) ''' 总结: 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 如果要判断中文数字或罗马数字,则需要用到isnumeric '''
6.is其他
print('===>') name='egon123' print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isidentifier()) 判断是否为标识符 print(name.islower()) 是否为全小写 print(name.isupper()) 是否全为大写 print(name.isspace()) 是否是空格 print(name.istitle()) 开头是否大写