流程控制之for循环、基本数据类型及其内置方法
一 循环之for循环
1、for循环的语法与基本使用
1.1、什么是for循环
循环就是重复做某事,for循环是python提供的第二种循环机制
1.2、为何要有for循环
理论上for循环能做的,while循环也能做
for循环在循环取值(遍历取值)比while循环更简洁
1.3、如何用for循环
语法:
for变量名 in 可迭代对象:#可以是列表、字典、字符串、元组、集合
代码1
代码2
代码3
基本循环使用之循环取值
2、for循环应用
#案例1:遍历列表
简单版
l = ['alex_dsb','lxx_dsb','egon_nb']
for x in l:
print(x)
复杂版
l = ['alex_dsb','lxx_dsb','egon_nb']
in < 0
while i <3:
print(i)
i+=1
#案例2:字典循环取值
简单版
dic = {'k1':111,'k2':222,'k3':333}
for k in dic:
print(k,dic[k])
复杂版:while喜欢可以遍历字典,麻烦
#案例3:字符串循环
简单版
msg = 'you can you up,no can no bb'
for x in msg:
print(x)
每个字母都会遍历
复杂版:while循环可以遍历字典,麻烦
3、for循环嵌套
range功能介绍:
range(10) #打印从0-9
range(1,9) #1...8,走1开始
range(1,9,1)
步长为1
range(1,9,2)
步长为2
#例1:
for i in range(30):
print('>>>:')
打印30行 >>>:
for i in range(3):
for k in range(5):
print("*",end='')
print() #print()表示换行
*****
*****
*****
#例2:
九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s'%(i,j,i*j),end=' ')
print()
1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 Process finished with exit code 0
4、for + break =while + break
for + else = while + else
for + continue 结束本次进入下一次
例:
for i in range(6)
if i ==4
continue
print(i)
0 1 2 3 5
二 数据类型及其内置方法
1、数字类型int与float
#int:整型
age = 10 #本质age = int(10)
可以将由纯整数构成的字符串直接转换成整型,若包含其他任意非整数符号,则会报错
s = '12.3'
res = int(s)
print(res,type(res))
Traceback (most recent call last):
File "D:/JetBrains/New Test/New 1/3.10.py", line 60, in <module>
res = int(s)
ValueError: invalid literal for int() with base 10: '12.3'
#float:浮点型
s = 3.3 #本质s = float(3.3)
2、类型转换
十进制转其他进制
二进制:bin(3) -> '0b11'
八进制:hex(17) ->'0x11'
十六进制:hex(17) -> '0x11'
其他进制转十进制:
二进制:int('0b11,2') ->3
八进制:int('0o11',8) ->9
十六进制:int('0x11',16) ->17
3、使用
int与float;没有需要掌握的内置方法
他们的使用就是数学运算+比较运算
三 字符串类型
1、定义:
在单引号\双引号\三引号内包含一串字符
2、类型转换
str可以把任意其他类型都转成字符串
3、使用:内置方法
3.1 优先掌握
3.1.1、按索引取值(正向取+反向取) :
msg='hello world'
a、正向取
print(msg[0])
print(msg[5])
b、反向取
print(msg[-1])
c、只能取
msg='hello python!'
msg[0] = 'H'
print(msg)
Traceback (most recent call last):
File "D:/JetBrains/New Test/New 1/3.10.py", line 64, in <module>
msg[0] = 'H'
TypeError: 'str' object does not support item assignment
3.2、切片
a、顾头不顾尾:
取出索引0-8的字符
msg[0:9]
hello pyt
b、步长: 0:9:2 第三个参数2代表步长,会从0开始,每次间隔2,即0、2、4、6
msg[0:9:2]
hlopt
c、反向切片
msg[::-1] #-1表示从右往左依次取值
msg='hello python!'
msg=msg[::-1]
print(msg)
!nohtyp olleh
d、长度len
获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符
len(msg) #空格也算字符
13
e、成员运算in 和 not in
#int :判断hello 是否在msg里
‘hello’ in msg
True
#not in :判断tony是否不在msg里面
‘tony’ not in msg
True
f、strip移除字符串首尾指定的字符(默认移除空格)
#括号内不指定字符,默认移除首尾空格
msg = ' life is short! '
msg.strip()
life is short!
#括号内指定字符,移除首位指定的字符
msg1 = '**tony**'
msg1.strip('*')
tony
g、切分split
# 括号内不指定字符,默认以空格作为切分符号
msg2 = 'hello world'
msg2.split()
['hello','world']
#括号内指定分隔字符,则按照括号内指定的字符切割字符串
msg3 = ‘127.0.0.1’
msg3.split(‘.’)
['127','0','0','1']
h、循环
msg4 = '今天你好吗?'
for line in msg4: 依次取出字符串中每一个字符
print(line)
今
天
你
好
吗
?
3.3 需要掌握的操作
a、strip,lstrip,rstrip
str1 = '**tony***'
a=str1.strip('*') # 移除左右两边的指定字符
b=str1.lstrip('*') # 只移除左边的指定字符
c=str1.rstrip('*') # 只移除右边的指定字符
print(a,b,c)
tony tony*** **tony
b、lower(),upper()
lower():英文字母全部小写
upper():英文字母全部大写
c、startswith,endswith
判断字符串是否已括号内指定的字库开头/结尾,结果为True/False
d、split、rsplit
# split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
str5='C:/a/b/c/d.txt'
a=str5.split('/',1)
print(a)
# rsplit刚好与split相反,从右往左切割,可以指定切割次数
str5='a|b|c'
b=str5.rsplit('|',1)
print(b)
['C:', 'a/b/c/d.txt']
['a|b', 'c']
e、join
’%‘ 针对字符串。
hello,‘%’。join('hello')->'h%e%l%l%o'
’|‘ 针对列表,取出多个字符串|作为分隔符号拼接
‘|’.join(['tony','18','read'])
f、replace
#新字符代替旧字符
语法:replace('旧字符',‘新字符’)
#指点修改个数,从左往右开始
g、isdigit
判断字符串是否是纯数字组成,返回结果为True 或 False
msg= ‘46’
msg.isdigit()
age=input('请输入你的年龄:').strip()
if age.isdigit():
age=int(age) # int("abbab")
if age > 18:
print('猜大了')
elif age < 18:
print('猜小了')
else:
print('才最了')
else:
print('必须输入数字,傻子')
3.4 了解操作
1、find,rfind,index,count
find:从字符串的第一个字母或数字开始索引,找到返回1,找不到返回-1
a、index:同find,但找到会报错
b、count:统计字符串在大字符串中出现的数次
msg='hello everyone'
a = msg.count('e',1,6) #索引e从1开始到5范围内出现的次数
2、center,ljust,rjust,zfill
xxx.center(总宽度,’要填充的字符‘) 字符串居中显示
xxx.ljust(总宽度,’要填充的字符‘)字符串左对齐显示
xxx.rjust()字符串右对齐
xxx.zfill(总宽),字符串右对齐显示,不够用0填充
3、captalize:首字母大写
swapcase:大小写反转
title:每个单词的首字母大写
for i in range(30):
for i in range(5):
print('*',end ='')
print()