python基础----Day05

内容概要:

  1. 循环流程控制
  2. else语句
  3. string类的驻留机制
  4. 字符串的切片操作
  5. 字符串的相关操作

一.循环流程控制(break,continue)

在循环的执行过程中,有时我们需要对循环进行控制,而不是让循环从头到尾彻底执行完。这时我们需要
在程序加入流程控制的关键字。

1.循环流程控制-break
break 只能用在循环体之中. 如果在循环体之中遇到 break, 就会立即结束当前循环结构. (跳出循环的一种方式)
我们的循环有两种结束方式 :

  1. 判断循环条件得到假而结束.
  2. 在循环体的内部通过 break 结束. 在循环体的内部判断循环是否应该结束, 如果要结束,就使用break.
  3. 通常与分支结构if一起使用:
    在这里插入图片描述
    在这里插入图片描述
    一旦符合if或else条件就会自动结束循环
    5.举个例子:
    需求:去询问你的姐姐让他给你买一双球鞋,如果她回答不愿意,就一直询问直到愿意为止,如果愿意就谢谢你的姐姐
#定义变量接受姐姐的输入
#问到愿意为止 => 死循环(循环次数未知)
while True:
    choice = input('姐姐,你愿不愿意给我买一双球鞋(愿意y  不愿意n):')
    if choice == 'y' or choice == 'Y':
        print('谢谢!')
        break #愿意的话就不用一直循环了,所以结束循环
    else:
        print('姐姐求求你了/(ㄒoㄒ)/~~')
print('执行后续代码....')

2.循环流程控制-continue
continue 语句只能用在循环语句中.
如果在循环体中碰到了continue则结束本次循环继续下次循环
举个例子就很容易理解啦😀

for i in range(10):
    if i == 3:
        continue
    print(i)

运行得到:
在这里插入图片描述
由图可见跳过了3,这就是continue的作用了

二.else语句

与else语句配合使用的几种种情况:

  1. 之前写过的if…else…分支语句
  2. while…else…
  3. for…else…

与循环连用的else语句的作用条件:
如果 程序不是通过break跳出的,是正常结束的,结束后就会执行else的内容
-----举个例子:

需求 : 用户输入密码, 有三次机会, 如果正确, 登录成功.
如果三次机会都输入错误, 冻结此账户.

for i in range(3):
    password = int(input('请输入密码:'))
    if password == 666888:
        print('密码正确,登录成功')
        break
    else:
        print('密码错误')
else:
    print('您的账户已被冻结,请联系管理员:陆小果')

运行得到结果如下:
第一种情况:
在这里插入图片描述
第二种情况:
在这里插入图片描述

三.string类的驻留机制

在程序开发中,字符串是程序员最常处理的数据类型

那么什么是字符串的驻留机制呢?
定义:相同的字符串内容在程序运行中,内存中仅有一份
在这里插入图片描述
也就是说,如果几个字符串是一样的(例如都是’python’),那么他们都在一个相同的内存中(这样可以节省内存)并且内存大小是有限的,字符串一般大小不能超过4M否则驻留机制失效

查看字符串的内存地址
使用python的内置方法:id()
例如:

a = 'python'
b = 'python'
print(id(a))
print(id(b))

运行得到:
在这里插入图片描述
这两串数字是相同的,也就是说明a与b的内存地址是相同的

四.字符串的切片操作

1.简介:字符串的切片操作就是对字符串进行截取,取出其中的一小段
在这里插入图片描述

说明: 字符串是不可变类型

  1. 不具备增删改等操作.
  2. 切片操作将产生新的对象
  3. 下标一般使用正向的
    在这里插入图片描述
    2.格式:
    字符串[start:stop:step]
    start 从哪个位置开始切呀? 默认为 0
    stop 切到哪结束呀? 默认切到最后(与range相类似)
    step 怎么切呀? 一个一个切呢? 还是隔一个切呢? 还是隔两个切呢? 默认是一个一个切
    3.例题:
    在这里插入图片描述

需求1 : 切出 hello 子字符串(substring)

str = 'hello,Python'
sub_string = str[0:5]
print(sub_string)

需求2 : 切出 Python 子字符串

str = 'hello,Python'
sub_string = str[6:12]
print(sub_string)

需求3 : 以下切片会得到什么结果?
str[: : 2]
答:从头切到尾,步长为2
str[: : -1]
答:正好将原字符串颠倒过来
str[0] => 取出h
str[6] =>取出P

五.字符串的相关操作

1.根据字符查找下标
刚刚我们是根据下标找到了对应的字符,现在我们要根据字符来查找它的下标

查找方法:
在这里插入图片描述
方法一:index() and rindex()
格式:字符串变量名.index() ()内写要查找的字符
需求:查找’hello,Python’中o的下标
index:从左往后筛查且只能找到一个

str = 'hello,Python'
index = str.index('o')
print(index)

运行得到:4

reindex:从右往左筛查且只能找到一个

str = 'hello,Python'
rindex = str.rindex
print(rindex)

运行得到:10

方法二:find and rfind
格式:字符串变量名.find() ()内写要查询的字符
需求:查找’hello,Python’中o的下标
具体操作呢与index和reindex相同


这个时候就会有同学好奇,这两种方法有区别吗?
答案是有但不在这上面

index类与find类的区别
index、reindex只能查找存在的字符,例如只能查找’hello,Python’中的’h’或’e’等等
如果查找一个不存在的字符,例如:'m’则会报错

而find、rfind如果查找不存在的字符,会得到-1 (这里得到的-1并非逆向下标而是不存在的意思)

str = 'hello,Python'
sub_string = str.find('m')
print(sub_string)

在这里插入图片描述
2.字符串的大小写转化
在这里插入图片描述
upper用法

str = 'LuXiaoguo'
upper_str = str.upper()
print(upper_str)

在这里插入图片描述

lower用法

str = 'LuXiaoguo'
lower_str = str.lower()
print(lower_str)

在这里插入图片描述
3.字符串的劈分
在这里插入图片描述
应用:
定义一个字符串
language = “Python|Java|PHP|JavaScript|C++|C|Swift|HTML”

language = "Python|Java|PHP|JavaScript|C++|C|Swift|HTML"
program_list = language.split('|') #切割后返回的结果是一个列表数据
print(program_list)

运行得到:
在这里插入图片描述

  1. ‘Python’, ‘Java’, ‘PHP’, ‘JavaScript’, ‘C++’, ‘C’, ‘Swift’, ‘HTML’]
    这就是一个列表数据,与字符串相类似,[ ]内是一个整体(正如字符串’ '内是一个整体一样)
    [ ]中用逗号隔开的是列表的元素,元素可以重复与字符串一样具有下标(从0开始)
  2. len() => python的内置方法,可以查看这个变量的长度
language = "Python|Java|PHP|JavaScript|C++|C|Swift|HTML"
program_list = language.split('|') #切割后返回的结果是一个列表数据
a = len(program_list)
print('f'a = {a})

运行得到:
a = 8

字符串劈分后返回一个列表数据,还可以通过join()将列表合并为字符串
例如:

language = "Python|Java|PHP|JavaScript|C++|C|Swift|HTML"
program_list = language.split('|') #切割后返回的结果是一个列表数据
result = '='.join(program_list)
print(result)

运行得到:
Python=Java=PHP=JavaScript=C++=C=Swift=HTML

3. len()在for…in…循环中的应用

language = "Python|Java|PHP|JavaScript|C++|C|Swift|HTML"
program_list = language.split('|') #切割后返回的结果是一个列表数据
for i in range(len(program_list)): #len(program_list) =>8 即循环8次
#观察发现:循环时,i的值与program_list中的元素下标相同
    print(program_list[i]) #依次取出列表中的元素

运行得到:
在这里插入图片描述

4. isdecimal()函数:判断指定字符串是否全部都由十进制的数字组成(记死了:判断字符串)
例如:

password = input('请输入密码:')
a = password.isdecimal()
print(a)
#如果输入的密码均为数字则输出为True,否则输出为False

5. 字符串的替换

str = 'hello,Python,Python'
result = str.replace('Python','China') #将Python替换为China
print(result)

运行得到:
hello,China,China

str = 'hello,Python,Python'
result = str.replace('Python','China',1) #将Python替换为China,且只替换一次
print(result)

运行得到:
hello,China,Python

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w沉默味道w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值