day04_循环结构与字符串容器

day04_循环结构与字符串容器 一、循环操作: while 和 for循环的定义循环让代码高效重复的执行避免冗余代码while循环基础#step1 定义计数器#step2 编写循环条件#step3 在循环体内部更新计数器的值 i1#step1 定义计数器i1#step2 编写循环条件whilei5:print(人生苦短我学Python)# step3 在循环体内部更新计数器的值 i1i1pycharm调试代码debugpycharm 不仅可以编辑代码也可以调试代码debug工具#step1 下断点 一般断点下载if/while/for 开始的位置#step2 鼠标右键开启调试功能#step3 使用step over 一步一步调试了解代码运行过程while循环i1whilei5:print(人生苦短我学Python)i1while循环2#1. 定义计数器i5#2. 编写循环条件whilei1:print(人生苦短我学Python)# 更新计数器的值i-1while循环计算1-100的和num0# 用来承接累积的值i1# 用来做计数器whilei100:numi# 将值累加到num中i1print(num)# 输出结果5050while循环计算1-100的偶数和#定义循环变量num0i1whilei100:ifi%20:# 判断是否为偶数numi# num存储结果i1# 计数器自增print(num)#定义循环变量i2num0whilei100:numi# 存储累积的和i2# 因为每个偶数和下一个偶数相隔22 4 6所以自增设置为2print(num)while循环吃苹果 break的作用是终止整个循环 i1whilei5:ifi3:print(吃饱了 不吃了)break# 直接跳出循环print(f正在吃第{i}个苹果)i1 continue是中止本次循环 进而进入下一次循环 i1whilei5:ifi3:print(这个苹果是坏了吃下一个)i1continue# 跳出i3这个循环进入i4 这个循环print(f正在吃第{i}个苹果)i1while循环死循环 不需要计数器依靠自身控制无法终止的循环 要结合input(),因为input有让代码阻塞的作用 whileTrue:print(这个一个死循环结构)input(请输入。。。。)while循环 猜数字游戏 编写一个Python程序 随机生成一个1到100之间的整数 用户通过输入猜测的数字 程序会根据用户的输入提示“猜大了”、“猜小了”或“猜对了”。 用户可以无限次猜测直到猜对为止。 猜对后程序会提示用户并结束游戏。 importrandom numrandom.randint(1,100)user_numint(input(请输入你猜的数))whileTrue:ifuser_numnum:print(恭喜你猜对了)breakelifuser_numnum:print(你猜大了)else:print(你猜小了)for循环的基本语法 for临时变量 in 数据容器序列: 原理一for循环会自动识别数据序列中一共有多少个元素有多少个元素就循环多少次 原理二 每次循环中系统会把当前取出的字符存储到i里 # 使用for循环遍历字符串 每次循环取出一个字符foriinitheima:# 有多少个元素就会循环多少次print(i)for循环指定次数循环 前置知识点 range() 顾头不顾尾 包含头部元素不包含尾部元素 方法一range(stop) 生成一个可迭代的对象 类似列表 [0,1,2,3,4] 方法二range(start,stop) range(1,6) [1,2,3,4,5] 方法三range(start,stop,step) range(1,11,2) [1,3,5,7,9] range很少单独使用一般是结合for循环实现指定次数的循环 foriinrange(1,6):# 1-6循环 包括1但不包括6print(i)print(-*40)# 分隔符foriinrange(2,11,2):# 从2开始每隔2直到11不包括11为止print(i)print(-*40)# 分隔符foriinrange(5):# 固定循环5次固定几次就在括号里写几print(i)for循环计算1-100的偶数和 使用for循环求1 ~ 100之间所有偶数的和 # 方法一sum0# 1. 定义一个for循环 生成1-100foriinrange(1,101):ifi%20:sumi# 叠加符合条件的数print(sum)# 方法二sum10foriinrange(2,101,2):sum1iprint(sum1)for循环实现用户登录操作 案例用for循环实现用户登录 ① 输入用户名和密码 ② 判断用户名和密码是否正确usernameadmin passwordadmin888 ③ 登录仅有三次机会超过3次会报错 foriinrange(3):usernameinput(请输入用户名)passwordinput(请输入你的密码)ifusernameadminandpasswordadmin888:print(登录成功)breakifusernameadmin:ifpasswordadmin888:print(登录成功)breakelse:print(f您的密码输入错误您还有{2-i}次机会)else:print(您的账号输入错误)print(f您的密码输入错误您还有{2-i}次机会)else:print(很抱歉您的登录次数已超过最大限制)# 在代码正常执行完成后 执行该代码方法二else:ifi!2:print(账号或密码错误)print(f你还剩{2-i}次机会)else:print(账号或密码输入错误最多三次机会哦~)for循环的else操作 循环可以和else配合使用 else下方缩进的代码指的是当循环正常结束之后要执行的代码。 强调正常结束非正常结束其else中的代码时不会执行的。 如遇到break的情况 循环正常结束只要没有遇到break关键字就会执行else下方缩进代码反之不执行 # 1. 对itheima这个字符串foriinitheima:ifie:print(i)continue# 用break就不会执行for循环else的执行continue不会影响print(i)else:# 当循环正常结束时系统会自动执行else下方的代码print(正常)二、字符串相关内容字符串定义方法 字符串定义 单引号、双引号、三个引号 # 单引号str1itheima# 双引号str2itheima# 三个引号str3 hello world nihao print(type(str1))print(type(str2))print(type(str3))# 想输出 用转义符或者 , 想输出双引号同理3str4I\m Tomstr5Im Tomprint(f{str4}\n{str5})字符串的索引下标# 1. 定义一个字符串str1itheima# 2. 正索引访问字符eprint(str1[3])# 3. 负索引访问字符eprint(str1[-4])print(str1[-5])# 字符h字符串的切片操作 口诀切片其实很简单只顾头来尾不管 步长为正则正向移步长为负则逆向移 1. 绘图像 2.看步长 3.切数据 不顾尾 # 有开头有结尾num0123456789print(num[2:5])# 等价为步长为2# 有开头没结尾print(num[2:])# 步长默认为1 没有结尾 默认到尾部包含尾部元素# 有结尾没开头print(num[:8])# 步长默认为1 没有开头 默认到头部包含头部元素# 没开头没结尾print(num[:])# 步长为1 没有开头结尾 默认整个字符串# 开头结尾有负数 负索引print(num[-5:-1])# 步长为1# 步长不为1print(num[2:6:2])# 从2开始到6 每隔两个输出一个 不包含6# 步长为负print(num[::-1])# 步长为-1相当于从右到左输出整个字符串# 特殊情况 如果开始和索引对应的方向与步长的方向不一致则截取不到任何信息print(num[-5:-1:-1])# -5 - -1 是正向的但是-1是从右往左所以输出不了数据print(num[-5:-1:1])# -5 - -1 是从左到右步长也是从左到右所以能输出数据print(num[1:5:-1])# 输出不了数据print(num[1:5:1])# 能输出数据字符串的查找方法 字符串变量.find(关键词): 找到了返回关键词出现位置的索引下标找不到返回-1 字符串变量.index(关键词): 找到了返回关键词出现位置的索引下标找不到直接报错 字符串变量.count(关键词): 返回字符串中关键词出现的次数 str1hello linux hello pythonprint(str1.find(python))print(str1.find(la))# 返回-1 代表没找到这个字符串# print(str1.index(la)) # 直接报错print(str1.count(hello))# 返回hello在字符串中出现的次数字符串的修改方法 字符串.replace(要替换的内容,替换后的内容,替换的次数) 实现关键词的替换 字符串.split(分割字符) 返回结果写入列表中 实现字符串的切割 字符串.title() 实现每个单词首字母大写 编写类 类名采用大驼峰 _.join(列表) 相当于把列表中的每一个元素 使用字符串进行拼接 列表转字符串 str1hello linux hello linuxprint(str1.replace(linux,python))# 把字符串中的所有python都替换成pythonprint(str1.replace(linux,python,1))# 把第一个替换# splitstr2apple_banana_orangedatastr2.split(_)# 根据下划线来切割print(data)# joinstr3_.join(data)print(str3)# titleprint(str3.title())n1sum1whilesum10:nn1sumnprint(sum)xint(2.5)print(x)