9.4、作业
1、字符串和数字之间不能比大小,但可以判断是否相等(一定不相等)
2、在 判断中使用or的时候,后边的判断条件一定写全,不能只写一个数据值
数字来说:0是 False,其余全是True,对于字符串来说,空字符串’’,是False
# 用户输入年龄,如果年龄超过60岁,输出:可以退休了
user_age = int(input('请输入年龄'))
if user_age > 60:
print('可以退休了')
# 用户输入年龄,判断用户处于哪个年龄阶段
# 0-17为青少年,18-35为青年,36-59为中年,60-99为老年
age = int(input("请输入年龄"))
if (age>0) and (age<=17):
print('青少年')
elif (age>17) and (age<=35):
print('青年')
elif (age>35) and (age<=59):
print('中年')
else:
print('老年')
# 制作用户登录系统,已知A用户注册的用户名为aaa,密码是123456.
# 具体要求如下:登陆时需要验证用户名、密码、验证码(固定验证码为qwer).
# 提示:系统先验证验证码是否正确,正确后再验证用户名和密码
user = input('请输入用户名')
pwd = input('请输入密码')
code = input('请输入验证码')
if code == 'qwer':
print('验证码正确')
if user=='aaa' and pwd=='123456':
print('用户名正确')
else:
print('用户名错误,请重新输入')
else:
print('验证码错误,请重新输入')
# 1-7个数字,分别代表周一到周日
# 如果输入数字是6或7,输出周末,否则输出工作日
day = int(input('请输入1-7任意数字'))
if day == '6' or day == '7':
print('周末')
else:
print('工作日')
# 猜数字游戏
# 电脑产生一个(1-100)的随机数,用户进行猜测(通过input输入),直到猜中
# 如果猜对了,输出:恭喜你猜对了,数字是xx
# 如果猜的数字比随机数大,输出:猜测的数字太大了,继续加油
# 如果猜测的数字比随机数小,输出:猜测的数字有点小,再来一次
import random
num = random.randint(1,100)
while True:
my_num = int(input('请输入一个数字'))
if my_num == num:
print(f'恭喜你猜对了,数字是{num}')
break
elif my_num > num:
print('猜测的数字太大了,再来一次')
elif my_num < num:
print('猜测的数字太小了,再来一次')
9.5、for循环
-
for循环可以遍历容器中的数据(
遍历:从容器中把数据一个一个取出来
容器:可以简单理解为盒子,盒子可以存放很多数据(字符串str,列表list,元组tuple,字典dict))
-
for循环 也可以称为for遍历
9.5.1、基本for循环
语法:
for 变量名 in 容器:
重复执行代码
# 1、for 和 in都是关键字
# 2、容器中有多少数据 ,循环就会执行多少次
# 3、每次循环,会将容器中数据取出一个 保存到in关键字前面的变量中
# 定义字符串
my_str = 'hello'
# 遍历字符串 # 字符串中有五个字符,循环就会执行5次
for i in my_str: # 每次循环i的值为字符串中的字符
print('喜欢你', i)
9.5.2、for做指定次数的循环
for 变量 in range(n):
重复执行
# 1. range() 是python中的函数,作用使用可以生成[0,n]之间的整数,不包含n的,一个有n个数字, 所以这个循环循环n次
# 2.想让for循环几次,n就写几
# 3.变量的值 也是每次循环从[0,n)取出一个值,第一次取得是0,最后一次取得是n-1
for i in range(5): # [0,1,2,3,4]
print(i)
print('-'*25) #---------------- 生成25个—
- range() 变形
for 变量 in range(a,b)
重复的代码
# range(a,b) 作用是生成[a,b)之间的整数数字,不包含b
# 需求:使用for循环获取5到10之间的数字
for m in range(5,11):
print(m) # 5,6,7,8,9,10
9.5.3、break和continue
break和continue是python中的关键字,只能在循环中使用
break:终止循环,即代码执行遇到break,循环不在执行,立即结束
continue:跳过本次循环。即代码执行遇到continue,本次代码剩下的代码不再执行,继续下一次循环
# 1、获取你输入的字符串
result = input('请输入字符串')
# 2、遍历打印这个字符串
for i in result:
# 3、在遍历的时候,如果这个字符是e,不打印
if i =='e':
continue # 本次循环后续的代码不执行,执行下一次代码
print(i)
可替换:
print('-'*27)
for i in result:
if i!= 'e':
print(i)
十、数据序列(容器)
容器:可以称为数据序列,或者高级数据类型
容器中可以存放多个数据
10.1、字符串定义
字符串是容器,因为字符串可以包含多个字符
使用引号(单引号,双引号,三引号)引起来
# 1.使用单引号定义
my_str1 = 'hello'
print(my_str1,type(my_str1))
# 2.使用双引号定义
my_str2 = "hello"
print(my_str2,type(my_str2))
# 3.使用三引号定义
my_str3 = '"hello"'
print(my_str3,type(my_str3))
# 4、字符串本身包含引号 I’m 小明
# 4.1 字符串本身包含单引号,则在定义时候不能使用单引号
# 4.2 字符串本身包含双引号,则在定义的时候不能使用双引号
my_str5 = "I'm 小明"
print(my_str5)
# 5.字符串本身包含单引号,在定义的时候,使用单引号
# 5.1 使用\转义字符,将字符串本身的引号进行转义 \'--->' \"--->"
my_str6 = 'I\'m 小明'
print(my_str6)
# 5.2 字符串 'I\'m 小明'
my_str7 = 'I\\\'m 小明'
print(my_str7)
# 5.3 字符串前面加上r"" 原生字符串,字符串中的\不会作为转义字符
my_str8 = r'I\'m 小明'
print(my_str8)
my_str9 = r'I\\\'m 小明'
print(my_str9)
10.2、字符串下标
下标(索引):指字符在字符串中的位置编号,这个编号一般从左到右进行编号,从0开始的(python中支持附属下标,从右到左进行编号,从-1开始)
下标作用:可以使用下标获取字符串中某个位置的字符
语法:
字符串[下标] #获取指定位置的字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vf8g7F2U-1649943151406)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649940197080.png)]
str1 = 'abcdefg'
# 1.打印字符串中最开始位置的字符
print(str1[0]) # a
# 2.打印最后一个位置的数据
print(str1[-1]) # g
# 3.打印倒数第二个位置的字符
print(str1[-2]) # f
# 打印下标为2的数据
print(str[2]) # c
- 字符串长度:
# 获取字符串中字符的个数(获取字符的长度)
# len(字符串)
num = len(str1)
print(num)
# 长度-1的下标位置是最后一个字符
print(str1[num - 1]) # 最后一个字符,倒数第一个、
print(str1[len(str1) - 1]) # 最后一个字符,倒数第一个
10.3、字符串切片
切片:可以获取字符串中多个字符(多个字符的下标是有规律的,等差数列)
语法:
字符串[start:end:step]
start是开始位置的下标,end是结束位置的下标(注意,不能取到这个位置的字符)
step步长,等差数列的差值,所取的相邻字符下标之间的差值,默认是1,可以不写
例:[1:5:1] # 1 2 3 4
[1:5:2] # 1 3
[1:5:3] # 1 4
[1:5:4] # 1
- 获取abc
# 切片会得到一个字符串,即可以获取字符串中的多个字符
str1 = 'abcdefg'
# 1 获取abc字符
print(str[0:3:1]) # abc
# 如果步长是1可以不写,最后一个冒号也不写
print(str1[0:3]) # abc
# 如果开始位置为0,可以不写,但冒号必须有
print(str1[:3]) # abc
- 获取efg
# 获取efg字符
print(str1[4:7]) # efg
print(str1[-3:7]) # efg
# 如果最后一个字符也要取,可以不写,但是冒号必须有
print(str1[4:]) # efg
# 如果开始和结束都不写,获取全部内容,但冒号必须有
print(str1[:]) # abcdefg
- 获取aceg
# 获取aceg # 下标0 2 4 6,所以步长为2
print(str1[0:7:2]) # aceg
print(str1[::2]) # a c e g
- 反转
# 特殊应用,步长为复数,开始和结束不写,意思全变,只有一种使用场景
# 反转(逆置)字符串 字符串[::-1]
print(str1[::-1]) # gfedcba