for循环&基本数据类型及内置方法

一、for循环

1、for循环的语法与基本使用

1)定义

  1. 什么是for循环
    循环就是重复做某件事,for循环是python提供的第二种循环机制
  2. 为什么要有循环
    本质上for循环能做的事情,while循环都可以做,之所以要有for循环,是因为for循环在循环取值(遍历取值)比while更简洁,代码可维护性更高
  3. 如何使用for循环
for  变量  in 可迭代对象:
   	代码1
   	代码2
   	代码3

可迭代对象
列表、字典、字符串、元组、集合

2)基本使用之循环取值

l = ('lll', 'oooo', 'kkkk')
# for循环
for x in l:
    print(x)
# while 循环
j = 0
while j < 3:
    print(l[j])
    j += 1

案例2:字典循环取值

# 定义字典循环取值
dic = {'name':'拍拍','age':18,'like':'sleep'}
for x in  dic:
    print(x)
    print(x,dic[x])

🔽执行结果

/usr/local/bin/python3.9 /Users/yincheng/local/study/Python基础/2024-11/day07/for循环.py
name
name 拍拍
age
age 18
like
like sleep

案例3 字符串循环取值

str="hello,my,littlecat"
for x in str:
	print(x)

2、for循环应用

变量名写了不一定就要用,for循环执行多少次,取决于要要遍历的元素有多少个

# 执行for循环的次数取决于要遍历的可迭代对象有多少个元素,要执行的代码也并不是只能取迭代里面的元素
l = ('lll', 'ooo', 'qqq')
for x in l:
    print('paipai是只发肥猫')

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
paipai是只发肥猫
paipai是只发肥猫
paipai是只发肥猫

总结:for循环与while循环
1)相同:都能实现循环,for循环可以干的事情,while循环也可以干
2)不同:while为条件循环,循环次数取决于条件何时变为假,for循环称之为“取值循环”,循环次数取决去in 后包含的值的个数

3、for循环嵌套

#外层循环执行一次,内层循环需要循环执行完毕了,外层循环才会继续执行下一次
l = ('lll', 'ooo', 'qqq')
p = (1,3,4,5,6,7)
for x in l:
    print('paipai是只发肥猫')
    for y in p:
        print("我是内层循环")

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
paipai是只发肥猫
我是内层循环
我是内层循环
我是内层循环
我是内层循环
我是内层循环
我是内层循环
paipai是只发肥猫
……
Process finished with exit code 0

终止for循环只有break一种方案

#外层循环执行一次,内层循环需要循环执行完毕了,外层循环才会继续执行下一次
l = ('lll', 'ooo', 'qqq')
p = (1,3,4,5,6,7)
for x in l:
    print('paipai是只发肥猫')
    for y in p:
        print("我是内层循环")
        break

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
paipai是只发肥猫
我是内层循环
paipai是只发肥猫
我是内层循环
paipai是只发肥猫
我是内层循环

Process finished with exit code 0

4、for+break+else

用for循环实现账号权益验证,berak直接终止所有循环

username = 'paipai'
userpwd = '123'
for i in range(3):
    inp_name=input('输入登录名:')
    inp_pwd=input('输入密码:')
    if inp_name==username  and inp_pwd==userpwd:
        print("登录成功~")
        break
    else:
        print("账号或密码输入错误请重新输入")
else:
    print("输入次数过多")

5、for+continue

# continue,结束本次循环直接进入下一次循环
for i in range(6):
    if i==4:
        continue
    print(i)

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
0
1
2
3
5

Process finished with exit code 0

6、for+range

for循环控制循环次数,通过range来实现

for+range 控制循环次数

补充

>>> range(5)
[0, 1, 2, 3, 4]
>>> range(1,9)
[1, 2, 3, 4, 5, 6, 7, 8]
>>> range(2,9)
[2, 3, 4, 5, 6, 7, 8]
>>> range(3,9)
[3, 4, 5, 6, 7, 8]
>>> range(3,9,2)
[3, 5, 7]

range补充知识(了解)
for 搭配 range,可以按照索引取值,比较麻烦,不推荐

l =('lll','kkk','111')
# print(len(l))
for i in range(len(l)):
    print(i)
    print(l[i])

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
0
lll
1
kkk
2
111

Process finished with exit code 0

7、print补充

# print补充
print('hello %s' % 'paipai') #% 引用授权
print('ok','fine','lets go') # ,表示空格
print('========')
print('hello\npaipai') #\n 表示print中的内容换行展示
print('========')
print('hello\n',end='******')
print('========')
print('hello',end='&') #用end后面的字符拼接下一行输出的内容
print('paipai',end='@')
print('okkkkk')

🔽运行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
hello paipai
ok fine lets go
========
hello
paipai
========
hello
******========
hello&paipai@okkkkk

Process finished with exit code 0

二、基本数据类型及内置方法

1、数字(进制转换)

print(bin(11))  # 10进制转二进制
print(oct(11))  # 10进制转八进制
print(hex(11))  # 10进制转16进制

# 二进制、八进制、十六进制转10进制
print(int('0b1011', 2))  # 二进制转10进制
print(int(0o13))  # 八进制转10进制
print(int('0o13', 8))  # 八进制转10进制
print(int(0xb))  # 十六进制转10进制

2)浮点类型

#类型转换
res = float("3.14")
print(res,type(res))

使用
int与float没有需要掌握的内置方法,他们使用的就是数学运算+比较运算

2、字符串

1)作用

📝记录描述性质的状态

2)定义

3)类型转换

4)优先掌握

1)按索引取值(正向取+反向取),只能取值,不能重新为字符串赋值
# 字符串取值
msg = 'hello paipai'
#正向取值
print(msg[0])
print(msg[5])
print(msg[6])
# 反向取值,默认倒数第一位为-1
print(msg[-1])
print(msg[-2])
print(msg[-6])
# # 只能取值,不能重新为字符串赋值
# msg[0] = 'H'
# print(msg)

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
h
 
p
i
a
p

Process finished with exit code 0

在这里插入图片描述

2)切片

索引的拓展应用,从一个大字符串中拷贝出一个子字符串(顾头不顾尾,步长)

msg = 'hellopaipai'
res = msg[0:7]  # 从字符串中第一位开始取,取到第几位结束
print(res)
print(msg)

#取值时加入步长
res2 = msg[0:9:3] # [从第几位开始取数:取到第几位结束(结束位不取):间隔多少位取值]
res3 = msg[0:9]
print(res2)
print(res3)

#方向步长(从后往前取)
res4 = msg[7:0:-1]
print(res4)

#将整个字符串的值取出来
res5 = msg[:]
res6 = msg[0:11]
print(res5)
print(res6)

#把字符串反过来取值
res7 = msg[::-1]
print(res7)
3)字符串长度+成员运算符
# 长度len
msg = 'hello paipai'
print(len(msg))
# 成员运算符 in not in
# 判断一个子字符串是否在一个大字符串中
print('paipai' in 'hello paipai')
print('paipai' not in 'hello paiapi')
4)移除字符串左右两侧不需要的符号 strip
# 默认去掉字符串首位空格,中间的空格无法去掉
msg = '      hello    paipai    '
res = msg.strip() #不会改变原值,默认产生了新值
print(msg)
print(res)
# 通过strip去掉除默认字符以外的字符
msg1 = '****hello paipai******'
res1 =msg1.strip('*')
print(res1)
print(msg1)
mgs2 = '-##*paipai/&()*'
print(mgs2.strip('-#*()/&'))

🚧 实际应用
解决在现实生产环境中,有些人在输入账号密码的时候会不小心输入空格,但是空格在输出设备是不展示的,这样会导致有些人因为多加了一个空格导致验证一直无法通过而责怪程序有问题,那么就通过strip内置方法来解决它!

for i in  range(3):
    username = input('输入账户名:').strip()
    userpwd = input('输入密码:').strip()
    if username=='paipai' and userpwd == '123':
        print("登录成功")
        break
    else:
        print("账号或密码输入错误")
else:
    print('验证失败次数过多,请稍后重试')
5)切分 split

把一个字符串按照某种分隔符进行切分,得到新的字符串,默认分隔符是空格

info = 'paipai is cat'
res = info.split()  # 默认分割符
print(res)
# 指定分隔符
info1 = 'paipai#is#cat'
res1 = info1.split('#')
print(res1)
# 指定分隔次数
res2 = info1.split('#',1)
print(res2)
#通过字符串的个数来实现循环
for x in info1:
    print('haohao')

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
['paipai', 'is', 'cat']
['paipai', 'is', 'cat']
['paipai', 'is#cat']
通过字符串的个数来实现循环
haohao
haohao
haohao
haohao
haohao
haohao
haohao
haohao
haohao
haohao
haohao
haohao
haohao

Process finished with exit code 0
需要掌握

1)strip,lstrip,rstrip

# 通过strip去掉除默认字符以外的字符
msg1 = '****hello paipai******'
res1 = msg1.strip('*')
print(res1)
res2 =msg1.lstrip('*') # 去除左边的指定字符
res3 =msg1.rstrip('*') # 去除有边的指定字符
print(res2)
print(res3)

🔽运行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
hello paipai
hello paipai******
****hello paipai

Process finished with exit code 0

2)lower(将字母全部改成小写)、upper(将字母全部改成大写)
3)通过.startswith(‘字符串’)-判断字符串是否在开头,通过.endswith(‘字符串’)判断字符串是否在结尾

msg = 'aaaBBBccD'
res1 = msg.lower()
res2 =msg.upper()
print(res1)
print(res2)
print('paipai is cat'.startswith('paipai'))
print('paipai is cat'.endswith('ca'))
print(msg.startswith('a'))
print(msg.endswith('cD'))

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
aaabbbccd
AAABBBCCD
True
False
True
True

Process finished with exit code 0
左切片 split 与 右切片rsplit
msg = 'paipai#18#cat'
res1 =msg.split('#',1)
res2 =msg.rsplit('#',1)
print(res1)
print(res2)

🔽 执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
['paipai', '18#cat']
['paipai#18', 'cat']

Process finished with exit code 0

5)join 把列表拼成字符串

l = ['paipai', '3', 'cat']
res1 = l[0] + ':' + l[1] + ':' + l[2]
print(res1)
# 使用join的方式进行拼接
res2 = ':'.join(l) #使用哪一个字符进行拼接,join(需要拼接的列表名)
print(res2)
print('^'.join(l))

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
paipai:3:cat
paipai:3:cat
paipai^3^cat
Process finished with exit code 0

6)replace

msg = 'paipai is dog,dog is paipai'
print(msg.replace('dog', 'cat'))  # 产生的是一个新值,且所有的值都被替换
print(msg.replace('dog', 'cat',1))  # 产生的是一个新值,只替换其中的一个值
print(msg)

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
paipai is cat,cat is paipai
paipai is cat,dog is paipai
paipai is dog,dog is paipai

Process finished with exit code 0

7)isdigit

# 判断字符串是否由字符串组成
print(msg.isdigit())
print('12.3'.isdigit())
print('12'.isdigit())
# isdigit扩展应用,根据用户输入判断是否为数字,在对应的区间内
while 1:
    age=input("猜猜我几年几岁了:")
    if age.isdigit():
        age=int(age)
        if age >18:
             print("猜大了,继续猜")
        elif age <18:
            print("猜小了,继续猜")
        else:
            print("猜对了🙅🏻‍")
            break
    else:
        print("请输入数字👌")

🔽执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
False
False
True
猜猜我几年几岁了:11
猜小了,继续猜
猜猜我几年几岁了:12
猜小了,继续猜
猜猜我几年几岁了:44
猜大了,继续猜
猜猜我几年几岁了:18
猜对了🙅🏻‍

Process finished with exit code 0

了解

1)索引

找到并返回起始索引

msg = 'paipai is qoq ,dog,dog is paipai'
# 能找到的情况
print(msg.find('p'))
print(msg.find('dog'))  # 如果要查询完整的字符串在大字符串中的位置,会默认查出这个子字符串首字母在大字符串中第一次出现的位置;
print(msg.index('p'))
# 不能找到的情况
print(msg.find('qq'))  # find 找不到时,返回-1
print(msg.index('qq')) # index 找不到时,抛出异常报错

🏃🏻‍♀️异常
在这里插入图片描述

2)统计字符串在大字符串中出现的次数

xxxx.count(‘要查询的字符’)

msg = 'paipai is qoq ,dog,dog is paipai dog'
print(msg.count('dog'))
3)控制打印格式(center ljust rjust zfill(n))
msg = 'paipai is qoq ,dog,dog is paipai dog'
print(msg.count('dog'))
#  控制打印格式
print('paiapi'.center(10, '*'))  # 前面的字符串+后面拼接的字符串一共10个,左右两边平均分布
print('paiapi'.ljust(10, '*'))  # 前面的字符串+后面拼接的字符串一共10个,字符串左边不需要填充
print('paiapi'.rjust(10, '*'))  # 前面的字符串+后面拼接的字符串一共10个,字符串右边不需要填充
# 用0填充
print('paipai'.zfill(10))  # 补充的0加原字符一共需要占几个字符串

🏃🏻‍♀️执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
3
**paiapi**
paiapi****
****paiapi
0000paipai

Process finished with exit code 0
4) is 数字系列
print('aBc'.islower())  #判断字符串是否全为小写
print('AAB'.isupper())  #判断字符串是否全为大写
print('Hello aipai'.istitle()) #判断大字符串的子字符串开头第一个字母是都为大写
print('3a33paipai'.isalnum())  # 判断大字符串的子字符串是否仅由数字或字母的组成,不允许有空格
print('paipai paipai'.isalpha())  # 判断大字符串的子字符串是否仅由字母组成,不允许有空格
print(' -oo'.isspace())  # 判断字符串仅有空格 false
print('ooooo'.isidentifier())  # 检查字符串是否为有效的标识符,有效标识符的条件(1.仅包含字母数字下划线,不能以数字开头,不能是Python关键字,如 if else for等)
print('1ooooo'.isidentifier())  # 以数字开头,执行错误p
扩展
# expandtabs
msg ='hello\tpaipai'
print(msg)
print(msg.expandtabs(12)) # 设置制表符代表的空格符为12

# captalize swapcase titlie
print('paipai is cat'.capitalize())  # 将字符串的首字母转成大写
print('Paipai is CAT'.swapcase())  # 将字符串中的字母大小写互换
print('Paipai is CAT'.title())  # 将字符串中每个子字符串首字母改成大写,其余改成小写

🏃🏻‍♀️执行结果

/usr/local/bin/python3.8 "/Users/achao/PycharmProjects/Achao/循环/for 循环.py"
hello	paipai
hello       paipai
Paipai is cat
pAIPAI IS cat
Paipai Is Cat

Process finished with exit code 0

数字判断

num1 = b'4'
num2 = u'4'
num3 = '四'
num4 = 'IV'
# 使用isdigit判断是否为数字
print(num1.isdigit())  # true
print(num2.isdigit())  # true
print(num3.isdigit())  # false
print(num4.isdigit())  # false
# isnumeric 如果字符串中的所有字符都是数字字符(包括常见的阿拉伯数字和各种语言中的数字字符),则返回 True。否则返回 False。

# print(num1.isnumeric())代码会直接报错
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
print(''.isnumeric())  # 空字符串返回false

# isdecimal 如果字符串中的所有字符都是十进制数字字符(即 0-9),则返回 True,否则返回 False。
# print(num1.isdecimal())  # 报错
print(num2.isdecimal())  # true
print(num3.isdecimal())  # false
print(num4.isdecimal())  # false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值