第三章
本章概览
介绍python中的程序结构、选择语句、条件表达式。循环语句、跳转语句、pass语句等内容
3.1 Python程序结构
计算机在解决某个问题时,主要有三种情形:分别是:顺序执行所有语句、选择执行部分语句、循环执行部分语句
顺序流程
程序从上而下执行,编写完成的语句按照编写的顺序依次被执行
选择流程
程序主要根据条件语句的结果选择执行不同的语句
循环流程
循环结构在一定条件下反复执行某段程序块,其中反复执行的语句叫循环体,根据
判断条件判断是否终止执行
3.2 选择语句
3.2.1 最简单的 if 语句
# coding = utf-8
"""
最简单的if语句
"""
if True: # 表达式
pass # 语句块
其中,表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式、或者逻辑表达式(例如:a > b and a != c) 如果表达式为真,则执行“语句块”;如果表达式的值为假,就跳过语句块,继续执行后面的语句。
注意:
其他语言(C、C++、Java)中有switch 语句 ,可以实现多重选择语句,但是Python中没有switch语句,所以实现多重选择功能时:只能用 if…elif…else 或者if语句嵌套
注意:
在Python中,当表达式的值为非零或者非空的字符串时,if 语句也认为是条件成立的(即:为真值)
# coding = utf-8
"""
当表达式的值为非零或者非空的字符串时
bool(0) = False / bool(0.0) = False / bool(None) = False
"""
if 4/2: # 表达式
pass # 语句块
实例01
解决黄蓉给瑛姑出的难题 判断一个数,除三余二、除五余三、除以七余二
# coding = utf-8
"""
功能:解决黄蓉给瑛姑出的难题 判断一个数,除三余二、除五余三、除以七余二
"""
print("今有物不知其数、三三数之剩二、五五数之剩三、七七数之剩二")
number = int(input("请输入你认为的数:")) # 输入一个数
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2: # 条件判断是否符合
print("今有物不知其数、三三数之剩二、五五数之剩三、七七数之剩二 的数是 :" + str(number))
else:
print("Sorry 不是这个数")
注意:
使用 if 语句时,如果只有一条语句,那么语句块可以直接写到冒号后面:
if a > b : max = a #不建议这么写
常见错误:
1:if语句后面未加冒号“:”
2: 使用if 语句,如果符合条件,需要执行多个逻辑行,则注意要有相同的缩进
如果只执行一句则注意缩进
if bmi < 18.5:
print("您的BMI值是:"+str(bmi)) # 输出BIM值
print("您的体重过轻")
#----------------------**注意缩进**---------------------
if bmi < 18.5:
print("您的BMI值是:"+str(bmi)) # 输出BIM值
print("您的体重过轻")
3.2.2 if…else 语句
Python中提供了 if … else 语句 其格式如下:
# coding = utf-8
"""
if ... else 语句
"""
if True: # 表达式1
pass # 表达式成立执行
else:
pass # 表达式不成立执行
使用==if … else == 语句时,表达式可以是单纯的布尔值或变量,也可以是比较表达式,或者逻辑表达式,如果条件满足则执行if 后面的语句,否则,执行else 后面的语句块,在汉语中表达为:“如果…否则…”
技巧
# coding = utf-8
"""
if ... else 语句技巧
"""
a = -9
if a > 0: # 表达式1
b = a # 表达式成立执行
else:
b = -a # 表达式不成立执行
print(b)
# ---------简写为:
a = -9
b = a if a > 0 else -a
print(b)
实例02
使用if … else 语句判断输入的数字是不是黄蓉所说的 除三余二、除五余三、除以七余二
# coding = utf-8
"""
功能:解决黄蓉给瑛姑出的难题 判断一个数,除三余二、除五余三、除以七余二
"""
print("今有物不知其数、三三数之剩二、五五数之剩三、七七数之剩二")
number = int(input("请输入你认为的数:")) # 输入一个数
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2: # 条件判断是否符合
print(str(number) + "满足条件" )
else:
print(str(number) + "不满足条件" )
==注意 ==
在使用else 语句时,else一定不可以单独使用,它必须和保留字 if 一起出现
==注意 ==
程序中使用 if … else 时,如果出现 if 语句多于 else 语句的情况,那么该 else 语句将会根据缩进确定 else 语句属于那个 if :
# coding = utf-8
"""
if ... else 语句缩进
"""
a = -1
if a >= 0:
if a > 0:
print("a 大于0")
else:
print("a 等于0")
else:
print("a 小于0")
3.2.3 if…elif…else 语句
Python中 if…elif…else 语句是一个多分支选择语句,通常表现为“如果满足某种条件,就会进行某种处理”,否则,如果满足另外一种条件,则执行另一种处理
# coding = utf-8
"""
if ...elif...else 语句格式
"""
number = int("请输入一个正整数判断是否是偶数")
if number % 2 == 0:
print(str(number) + " :是偶数")
elif number % 2 != 0:
print(str(number) + " :是奇数")
else:
pass
e
==注意 ==
if 和 elif 都需要判断表达式的真假,而else则不需要判断;另外,elif 和 else 都必须与 if 一起使用,不能单独出现
实例03
# coding = utf-8
"""
输出玫瑰花语
"""
print("在古代希腊神话中、玫瑰花集爱情与美丽与一身,所以人们常用玫瑰花表达爱情")
print("但是不同朵数的玫瑰花代表的含义不同的\n")
# 获取用户输入的朵数并转化为整数
number = int(input("输入您想送几朵玫瑰花,AI会告诉您含义:"))
if number == 1:
print("1朵: 你是我的唯一")
elif number == 3:
print("3朵: I LOVE YOU")
elif number == 10:
print("10朵: 十全十美")
elif number == 99:
print("99朵:天长地久")
elif number == 108:
print("108朵:求婚")
else:
print("AI 也不知道了,可以考虑送 1 朵、3朵、10朵、99朵、109朵")
==注意 ==
当使用布尔类型的变量作为判断条件时,假设布尔值为 flag 较为规范的格式如下:
if flag / if not flag 不能写成 if flag = True or flag = False
3.2.4 if 嵌套语句
前面介绍的三种形式的 if 语句 ,在使用过程中是可以进行嵌套使用的
# coding = utf-8
"""
if 嵌套语句格式
"""
# if .... else 嵌套语句
if True:
if True:
pass
else:
pass
else:
pass
# if ....elif.... else 嵌套语句
if True:
if True:
pass
elif True:
pass
elif True:
pass
else:
pass
elif True:
if True:
pass
elif True:
if True:
pass
else:
pass
else:
pass
==注意 ==
if 选择语句可以有多重嵌套方式,开发程序的过程中,可以根据自身需要选择合适的嵌套方式,但是一定要严格控制好级别代码快的缩进
实例04
通过使用嵌套if语句实现根据数据输入的酒精含量判断是否为酒后驾车
# coding = utf-8
"""
if 嵌套语句:
通过使用嵌套if语句实现根据数据输入的酒精含量判断是否为酒后驾车
"""
print("\t\n 为了您和他人的安全,严禁酒后驾车!\n")
proof = int(input("请输入每100毫升血液的酒精含量:")) # 获取用户的酒精含量,并转为整型
if proof < 20:
print("\n您不构成饮酒行为,可以开车,但要注意安全")
else:
if proof < 80:
print("\n已经达到酒后驾车的标准,请不要开车")
else:
print("\n已经达到醉酒驾车的标准,亲人两行泪,千万不要开车")
练习01 if语句&断点调试 #F44336
# coding = utf-8
"""
1:选择语句
2:断电调试
"""
# sex = input("请输入性别:")
# if sex == "男":
# print("您好,先生!")
# elif sex == "女":
# print("您好,女士!")
# else:
# print("性别未知")
# 调试:让程序中断,逐语句执行,目的:审查运行过程中变量取值、审查程序运行流程
# 步骤:1、加断点 shift + F9 2、调试运行 3、执行下一步 F8 4、停止 ctrl + F2
# 练习断点:
price = float(input("请输入商品单价:"))
number = int(input("请输入商品数量:"))
money = float(input("请输入金额:"))
result = money - price * number
if result >= 0:
print("应该找回:" + str(result))
else:
print("金额不足")
**==练习02 季节月份判断&算数运算 **
# coding = utf-8
"""
练习:在控制台中获取一个季度(春夏秋冬)
显示相应的月份 春 --> 1 , 2, 3,
夏 --> 4,5,6
秋 --> 7,8,9
冬 --> 10,11,12
"""
season = input("请输入季度:")
if season == "春":
print("春天:--> 1月 、 2月 、 3月 ")
elif season == "夏":
print("夏天:--> 4月 、 5月、 6月 ")
elif season == "秋":
print("秋天:--> 7月 、 8月、 9月 ")
else:
print("冬天:--> 10月 、 11月、 12月")
"""
练习:在控制台中录入一个数字
再录入一个运算符(+ - * /) 最后再录入一个数字 根据运算符计算两个数字,
要求:如果运算符,不是加减乘除,则提示"运算符有误"
"""
number01 = float(input("请输入一个数字:"))
number02 = float(input("请再输入一个数字:"))
op_ver = input("请输入这两个数的运算关系(+、-、*、/):")
if op_ver not in ('+', '-', '*', '/'):
print("运算符无效")
else:
if op_ver == "+":
print("您输入的加运算,运算结果是:" + str(number01 + number02))
elif op_ver == "-":
print("您输入的减运算,运算结果是:" + str(number01 - number02))
elif op_ver == "*":
print("您输入的乘运算,运算结果是:" + str(number01 * number02))
else:
print("您输入的除运算,运算结果是:" + str(number01 / number02))
练习 IF ELSE 嵌套,真值表达式,条件表达式
# coding = utf-8
"""
练习:在控制台中获取一个季度(春夏秋冬)
显示相应的月份 春 --> 1 , 2, 3,
夏 --> 4,5,6
秋 --> 7,8,9
冬 --> 10,11,12
"""
season = input("请输入季度:")
if season == "春":
print("春天:--> 1月 、 2月 、 3月 ")
elif season == "夏":
print("夏天:--> 4月 、 5月、 6月 ")
elif season == "秋":
print("秋天:--> 7月 、 8月、 9月 ")
else:
print("冬天:--> 10月 、 11月、 12月")
"""
练习:在控制台中录入一个数字
再录入一个运算符(+ - * /) 最后再录入一个数字 根据运算符计算两个数字,
要求:如果运算符,不是加减乘除,则提示"运算符有误"
"""
number01 = float(input("请输入一个数字:"))
number02 = float(input("请再输入一个数字:"))
op_ver = input("请输入这两个数的运算关系(+、-、*、/):")
if op_ver not in ('+', '-', '*', '/'):
print("运算符无效")
else:
if op_ver == "+":
print("您输入的加运算,运算结果是:" + str(number01 + number02))
elif op_ver == "-":
print("您输入的减运算,运算结果是:" + str(number01 - number02))
elif op_ver == "*":
print("您输入的乘运算,运算结果是:" + str(number01 * number02))
else:
print("您输入的除运算,运算结果是:" + str(number01 / number02))
"""
练习:在控制台输入四个数字,打印最大的数字
"""
print("输入四个数字比较大小:\n\t")
number01 = int(input("请输入第一个数:"))
number02 = int(input("请输入第二个数:"))
number03 = int(input("请输入第三个数:"))
number04 = int(input("请输入第四个数:"))
number02 = number01 if number01 > number02 else number02
number03 = number03 if number03 > number02 else number02
number04 = number04 if number04 > number04 else number03
print(number04)
"""
在控制台中录入一个成绩,判断等级,优秀,良好,及格,不及格,输入有误
"""
grade = float(input("请输入你的分数:"))
if 90 <= grade <= 100:
print("优秀")
elif 80 <= grade < 90:
print("良好")
elif 60 <= grade < 80:
print("及格")
elif grade < 60:
print("不及格")
else:
print("输入有误")
# 等价于上面
if grade > 100 or grade < 0:
print("输入的有误")
elif grade >= 90:
print("优秀")
elif grade >= 80:
print("良好")
elif grade >= 60:
print("及格")
else:
print("不及格")
"""
在控制台中获取一个月份 ,打印天数
"""
month = int(input("请输入一个月份:"))
if month > 12 or month < 1:
print("输入有误")
elif month in (1, 3, 5, 7, 8, 10, 12):
print(str(month) + " 该月份共有31天")
elif month in (4, 6, 9, 11):
print(str(month) + " 该月份共有30天")
else:
year = int(input("请输入年份判断闰年还是平年:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(str(month) + "这个月份所在的年份是闰年共有29天")
else:
print(str(month) + "这个月份所在的年份 是平年共有28天")
"""
练习1:在控制台中获取一个整数,如果是偶数为变量state赋值"偶数"、否则赋值"奇数"
练习2: 在控制台中录入一个年份,如果是闰年,给day赋值29 否则28
"""
state = "偶数" if int(input("请输入一个正整数")) % 2 == 0 else "奇数"
print(state)
year = int(input("请输入一个年份:"))
(year % 4 == 0 and year % 100 != 0)
day = 29 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) else 28
print(day)
3.3 条件表达式&三目运算
# coding = utf-8
"""
条件表达式、三目运算
"""
a = 10
b = 6
r = None
# -----正常的if语句判断
if a > b:
r = a
else:
r = b
# -----等价于
r = a if a > b else b
state = "偶数" if int(input("请输入一个正整数")) % 2 == 0 else "奇数"
3.4 循环语句
循环语句:反复的重复一件事情,称为循环,循环主要有两种类型
- 重复一定次数,称为计次循环,如 for
- 一直重复,直到条件不满足时才结束的循环,称为条件循环,这种循环会一直秩序下去,如while循环
注释: #
在其他语言中(C、C++、JAVA)条件循环包括 do…while循环,但是在Python中没有do…while 循环
3.4.1 while 循环
while循环是通过一个条件来控制是否要继续反复执行循环体中的语句
while 条件表达式:
循环体
# coding = utf-8
"""
功能:解决黄蓉给瑛姑出的难题 判断一个数,除三余二、除五余三、除以七余二
循环找出符合该条件的数字
"""
print("今有物不知其数,三三数之剩二、五五数之剩三、七七数之省二,问几何?\n")
none = True # 作为循环条件的变量
number = 0 # 计数的变量
while none:
number += 1
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
print("答曰,这个数是", number)
if number == 1000:
none = False
3.4.2 for 循环
for 循环体是一个依次洪福执行的循环。通常适用于枚举或遍历序列。以及迭代的对象中的元素。
# coding = utf-8
"""
功能:for 语法格式
"""
for 迭代变量 in 对象:
循环体
"""
迭代变量:用于保存读取出的值
对象:要遍历或迭代的对象(有序对象、字符串、列表、元组)
循环体: 一组被重复执行的语句
"""
实现从1到100的累加,可以通过下面的代码实现:
# coding = utf-8
"""
功能:for 实现 1 到 100 的累加
"""
print("计算1+2+3+4+.....100的结果")
result = 0 # 保存累加的结果变量
for i in range(101):
result += i # 实现累加功能
print(result) # 在循环结束时输出结果
"""
range() 函数多用于 for
"""
注意:
range(start,end,step)
start: 用于指定计数的起始值,可以忽略,如果忽略则从0开始
end : 用于指定计算的结束值(但是不包括该值,如range(7),得到的是0~6 但是不包括7),不能省略,当range()函数中只有一个参数时,即表示指定的计数结束值
step : 用于指定步长,即两个数之间的间隔,可以省略,如果省略则表示步长为1,例如range(1,7)表示得到 1、2、3、4、5、6
# 输出10以内的奇数:
for i in range(1,10,2):
print(i,end = '')
注意: #
在Python中,如果想让print打印语句的内容在一行上显示,加上“end = '分割符号'”
print("打印内容",end = '')
# coding = utf-8
"""
功能:for 语法格式
解决黄蓉给瑛姑出的难题 判断一个数,除三余二、除五余三、除以七余二
循环找出符合该条件的数字
"""
print("今有物不知其数,三三数之剩二、五五数之剩三、七七数之省二,问几何?\n")
for number in range(1, 1001, 1):
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
print("答曰:这个数是:", number, end='/')
遍历字符串
# coding = utf-8
"""
功能:for 语法,遍历字符串
"""
string = "加油,骚年!"
for ch in string:
print(ch, end=" / ")
3.4.3 嵌套循环
在Python中,允许在一个循环体中嵌套另一个循环,称之为循环循环嵌套。
# coding = utf-8
"""
功能:嵌套循环格式
"""
# 第一种循环方式
while True:
while True:
print("循环体")
print("循环体")
# 第二种循环方式
for i in range(101):
for j in range(101):
print("循环体")
print("循环体")
# 第三种循环方式
while True:
for j in range(101):
print("循环体")
print("循环体")
# 第四种循环方式
for i in range(101):
while True:
print("循环体")
print("循环体")
嵌套循环之一:九九乘法表
# coding = utf-8
"""
功能:九九乘法表
"""
# 九九乘法表格式一
for i in range(1, 10, 1): # 输出9行
for j in range(1, i + 1, 1):
print(str(i) + " * " + str(j) + " = " + str(i * j) + "\t", end=' ')
print('')
print('########################################################################')
# 九九乘法表格式二
for i in range(9, 0, -1): # 输出9行
for j in range(1, i + 1, 1):
print(str(i) + " * " + str(j) + " = " + str(i * j) + "\t", end=' ')
print('')
print('########################################################################')
# 九九乘法表格式三
for i in range(1, 10, 1): # 输出9行
for j in range(9, 0, -1):
if i >= j:
print(str(i) + " * " + str(j) + " = " + str(i * j), end="\t")
else:
print(" ", end='\t')
print('')
print('########################################################################')
# 九九乘法表格式四
# coding = utf-8
"""
功能:九九乘法表
"""
# 九九乘法表格式一
for i in range(1, 10, 1): # 输出9行
for j in range(1, i + 1, 1):
print(str(i) + " * " + str(j) + " = " + str(i * j) + "\t", end=' ')
print('')
print('########################################################################')
# 九九乘法表格式二
for i in range(9, 0, -1): # 输出9行
for j in range(1, i + 1, 1):
print(str(i) + " * " + str(j) + " = " + str(i * j) + "\t", end=' ')
print('')
print('########################################################################')
# 九九乘法表格式三
for i in range(1, 10, 1): # 输出9行
for j in range(9, 0, -1):
if i >= j:
print(str(i) + " * " + str(j) + " = " + str(i * j), end="\t")
else:
print(" ", end='\t')
print('')
print('########################################################################')
# 九九乘法表格式四
for i in range(9, 0, -1): # 输出9行
for j in range(9, 0, -1):
if i >= j:
print(str(i) + " * " + str(j) + " = " + str(i * j), end="\t")
else:
print(" ", end='\t')
print('')
3.5 跳转语句
实现中间离开循环,也就是在for语句执行结束之前、或者while循环之前找到结束条件之前,有两种方式来做到
- 使用continue 语句直接跳转到循环的下一个迭代
- 使用break完全终止循环
3.5.1 break 语句
break 语句可以终止当前的循环,包括 while、for 在内的所有控制语句。
注意 #: break语句一般结合 if 语句 进行搭配使用、表示在某种条件下,跳出循环,如果使用嵌套循环,break将跳出最内层的循环。
while break
# coding = utf-8
"""
功能:while 语句中的 break 语句格式
"""
while True:
print("循环体")
if True:
break
for break
# coding = utf-8
"""
功能:break 语句格式
"""
for i in range(1, 101, 1):
print("循环体内部")
if i == 100:
break
实例
# coding = utf-8
"""
功能:break 演示
"""
print("今有物不知其数,三三数之剩二、五五数之剩三、七七数之剩二,问几何 \n")
for number in range(1, 1001):
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
print("答曰:这个数是", number)
break
3.5.2 contiune 语句
continue 语句的作用没有break 语句强大,它只能终止本次循环而提前进入到下一次循环中。
注意: #
continue语句一般会与if 语句搭配使用,表示在某种条件下,跳过当前循环的剩余语句,然后继续进行下一轮循环,如果使用嵌套循环,continue语句只跳过最内层循环中的剩余语句
while continue
# coding = utf-8
"""
功能:continue 演示
"""
while True:
print("循环体代码")
if True:
continue
for continue
# coding = utf-8
"""
功能:continue 演示
"""
for i in range(1,101,1):
print("循环体代码")
if True:
continue
实例:逢七拍腿游戏
# coding = utf-8
"""
功能:continue 演示:逢七拍腿游戏
"""
total = 99 # 记录拍腿次数的变量
for number in range(1, 100):
if number % 7 == 0:
print(number)
continue
else:
string = str(number)
if string.endswith("7"):
print(string, "###########")
continue
total -= 1
print('从1到99共拍腿', total)
3.6 pass 语句
在Python中有一个pass语句,表示空语句。它不做任何事情,一般起到占位作用。例如,在用for 循环输出 1 ~ 10 之间 的 偶数,在不是偶数时,应用pass 语句占位置。
# coding = utf-8
"""
功能:pass 语句演示
"""
for i in range(1, 10, 1):
if i % 2 == 0:
print(i, " 是偶数\t", end='')
else:
pass
实战练习 #F44336
# coding = utf-8
import random
"""
循环for_while_控制语句break_continue 练习
"""
# 练习1:模拟支付宝蚂蚁森林的能量产生过程
while True:
print("查询能量请输入能量来源!退出请按 0\t\n")
print("能量来源如下:\n")
print("生活缴费、行走捐、共享单车、线下支付、网络购票\n")
flag = input()
if flag not in ("生活缴费", "行走捐", "共享单车", "线下支付", "网络购票", "0"):
print("输入有误请重新输入:")
else:
if flag == "0":
break
elif flag == "生活缴费":
print("100g")
elif flag == "行走捐":
print("200g")
elif flag == "共享单车":
print("150g")
elif flag == "线下支付":
print("50g")
else:
print("50g")
# 练习1:猜数字游戏,随机生成一个1到100的数字,十次机会猜数字
flag = 1
random_int = random.randint(1, 100)
while True:
if flag == 10:
print("你个垃圾,游戏退出:")
break
else:
number = int(input("请输入一个1到100以内正整数,一共十次机会 - 第 " + str(flag) + "次输入:\n"))
if number == random_int:
print("您第 ", flag, " 猜对了,真厉害")
break
else:
if number > random_int:
print("大了 、 请输入错误请重试")
else:
print("小了 、 请输入错误请重试")
flag += 1
# 模拟 10086 功能
"""
1:输入1 显示当前余额
2:输入2 显示您当前剩余的流量
3:输入3 显示您当前的剩余通话
4:输入0 退出系统
"""
print("------------ 10068 查询系统 ---------")
while True:
number = int(input("""
1:输入 1 显示当前余额
2:输入 2 显示您当前剩余的流量
3:输入 3 显示您当前的剩余通话
4:输入 0 退出系统
"""))
if number not in (1, 2, 3, 0):
print("输入有误请重新输入")
else:
if number == 1:
print("当前余额:100")
elif number == 2:
print("当前剩余流量:24G")
elif number == 3:
print("当前剩余通话:24H")
else:
break
补充学习&练习
打印中间数值以及纸的对折
# coding = utf-8
"""
练习1:在控制台中获取一个开始值,一个结束值,将中间的数字打印出来
"""
start_number = int(input("请输入一个开始值:"))
end_number = int(input("请输入一个结束值:"))
# for 循环展示
for nbr in range(start_number + 1, end_number, 1):
print(nbr, end="\t")
print("\n")
# while 循环展示
while start_number < end_number - 1:
start_number += 1
print(start_number, end="\t")
"""
练习2:一张纸的厚度是0.01毫米 请计算对折多少次,超过珠穆朗玛峰 8844.43 米
"""
qomolangma_hight = 8844.43 * 100 * 10 # 换成毫米
parper = 0.01
times = 0 # 次数
while parper <= qomolangma_hight:
times += 1
parper *= 2
print("对折第 " + str(times) + " 目前纸的厚度是:" + str(parper / 100 / 10))
print(times)
猜数字游戏2.0
"""
练习3:猜数字游戏
1:游戏运行产生一个 1 - 100 之间的随机数 让玩家重复猜测,直到猜对为止
2:提示大小
"""
random_nbr = random.randint(1, 100)
for i in range(1, 11, 1):
number = int(input("请输入一个正整数:第 " + str(i) + " 猜数:\n"))
if i == 10:
print("您失败了,你个垃圾!")
break
else:
if number == random_nbr:
print("恭喜您第 " + str(i) + " 猜对了,准确是数字是:" + str(number))
break
else:
if number > random_nbr:
print("猜大了,您还有 " + str(10 - i) + " 次机会")
else:
print("猜小了,您还有 " + str(10 - i) + " 次机会")
判断成绩等级
"""
练习:重复根据成绩判断等级、如果录入字符串则退出程序,如果录入成绩错误三次退出系统
"""
times = 0
while True:
source = input("请输入您的成绩判断等级: \n")
if source == "":
print("退出成绩等级系统:")
break
elif float(source) < 0 or float(source) > 100:
if times == 2:
print("录入成绩错误三次,退出系统")
break
else:
times += 1
print("输入成绩有误:请重新输入--注意:错误三次退出系统,还有" + str(3 - times) +"次")
else:
if float(source) >= 90:
print("优秀")
elif float(source) >= 80:
print("良好")
elif float(source) >= 60:
print("及格")
else:
print("成绩不及格")
for range break continue
for 语句
1. 作用:
用来遍历可迭代对象的数据元素。
可迭代对象是指能依次获取数据元素的对象,例如:容器类型。
2. 语法:
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
3. 说明:
else子句可以省略。
在循环体内用break终止循环时,else子句不执行。
range 函数
1. 作用:
用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。
2. 语法:
range(开始点,结束点,间隔)
3. 说明:
函数返回的可迭代对象可以用for取出其中的元素
返回的数字不包含结束点
开始点默认为0
间隔默认值为1
跳转语句
break 语句
1. 跳出循环体,后面的代码不再执行。
2. 可以让while语句的else部分不执行。
continue 语句
跳过本次,继续下次循环。
演示
# coding = utf-8
"""
for
1:用来迭代可迭代对象的数据元素
2:可迭代对象指能依次获取数据元素
语法:
for 变量列表 in 可迭代对象
语句块
"""
# for 语法格式
string = "我叫苏大强"
for item in string: # item 存储的是每个字符的地址
print(item)
# 整数生成器:range(开始值,结束值,间隔)
for item in range(1, 5, 1): # for + range : 更擅长执行预定次数
print(item)
"""
练习1:累加1-100的和
练习2:累加1-100之间的偶数和
练习3:累加10 - 36 之间的和
练习4:累加
"""
# 练习1:累加1-100的和
add_1_100 = 0
for i in range(101):
add_1_100 += i
print(add_1_100)
# 练习2:累加1-100之间的偶数和
add_1_100_even = 0
for i in range(2,101,2):
add_1_100_even += i
print(add_1_100_even)
# 练习3:累加10 - 36 之间的和
add_10_36 = 0
for i in range(10,37,1):
add_10_36 += i
print(add_10_36)
随机加数运算
# coding = utf-8
import random # 导入随机数函数
"""
练习:随机加法考试
随机生成两个数字
在控制台获取两个数的相加结果
如果用户输入正确得10分
总共三道题,最后输出得分
"""
source = 0
for item in range(3):
number01 = random.randint(1, 11) # 生成第一个数
number02 = random.randint(1, 11) # 生成第二个数
# reslut = int(input("开始计算:" + str(number01) + " + " + str(number02) + " = \t"))
if int(input("开始计算:" + str(number01) + " + " + str(number02) + " = \t")) == number01 + number02:
print("回答正确 + 10 分")
source += 10
else:
print("回答错误")
print("您的总成绩为:", source)
for else 的使用
注意:通过配合 break 使用 、for 循环结束后 执行else ,通过 break 跳出循环 执行 else
"""
练习:在控制台中获取一个整数,判断是否为素数 ,只能被1和自身整除的正数
"""
number = int(input("请输入一个数,查看是否是素数:\t"))
bool_flag = True
if number < 2:
print("请重新输入")
else:
for i in range(2,number,1):
if number % i == 0:
print("不是素数")
break
else:
print("是素数")
continue 语句演示
"""
continue 演示&练习
"""
# 累加1-100之间,能被5整除的数字
sum_value = 0
for item in range(1, 101):
# 不满足条件,跳过
if item % 5 != 0:
continue
sum_value += item
print(sum_value)
"""
练习:累加10-50之间各位不是2,5,9的整数
"""
sum_value = 0
for item in (10, 51, 1):
# if item % 10 in (2, 5, 9):
if item % 10 == 2 or item % 10 == 5 or item % 10 == 9:
continue
sum_value += item
print(sum_value)
字符串 str
定义
由一系列字符组成的不可变序列容器,存储的是字符的编码值。
编码
1. 字节byte:计算机最小存储单位,等于8 位bit.
bit * 8 = B * 1024 = KB * 1024 = MB * 1024 = G * 1024 = T
# coding = utf-8
"""
进制转换
"""
number = hex(17) # 转16 进制 0x11
print(number)
number = bin(17) # 转2 进制 0b10001
print(number)
number = oct(17) # 转8 进制 0o21
print(number)
2. 字符:单个的数字,文字与符号。
3. 字符集(码表):存储字符与二进制序列的对应关系。
4. 编码:将字符转换为对应的二进制序列的过程。
5. 解码:将二进制序列转换为对应的字符的过程。
6. 编码方式:
--ASCII编码:包含英文、数字等字符,每个字符1个字节。
--GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节。
--Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节。
--UTF-8编码:Unicode的存储与传输方式,英文1字节,中文3字节。
"""
str编码函数
"""
"""
str编码函数
"""
# 字 ----> 数
print(ord("a"))
# 数 ----> 字
print(chr(97))
相关函数
1. ord(字符串):返回该字符串的Unicode码。
2. chr(整数):返回该整数对应的字符串。
"""
练习1:在控制台中,获取一个字符串 打印每个字符的编码值
练习2:在控制台中重复录入一个编码,然后打印字符
"""
# 练习1:在控制台中,获取一个字符串 打印每个字符的编码值
string = "I Love You !"
for item in string:
print(ord(item),end="、")
print()
# 练习2:在控制台中重复录入一个编码,然后打印字符
while True:
str_input = input("请输入编码:")
if str_input == "":
break
else:
print(chr(int(str_input)))
字面值
单引和双引号的区别
1. 单引号内的双引号不算结束符
2. 双引号内的单引号不算结束符
三引号作用
1. 换行会自动转换为换行符\n
2. 三引号内可以包含单引号和双引号
3. 作为文档字符串
转义字符
1. 改变字符的原始含义。
\’ \” \””” \n \\ \t \0 空字符
2. 原始字符串:取消转义。
a = r”C:\newfile\test.py”
字符串格式化
1. 定义:
生成一定格式的字符串。
2. 语法:
字符串%(变量)
"我的名字是%s,年龄是%s" % (name, age)
3. 类型码:
%s 字符串 %d整数 %f 浮点数
"""
str 字面值
"""
# 没有差别,双引号 和 单引号 都是一样的
name = "苏大强"
name = '苏大强'
# 三引号(可见即所得)
name = """
苏
大
强
"""
print(name)
# 单引号内的双引号不算结束符 、 双引号内的单引号不算结束符 (可以单双引号套用)
message = '我叫\"苏大强\"。'
print(message)
"""
转义符:改变原始字符含义的符号
"""
# 转义符
message = "我叫\"苏大强\"" # 改变原始字符的含义
message = "我叫\n苏大强" # \n 换行
print(message)
message = "我叫\t苏大强" # \t 水平制表格子
print(message)
url = "C:\nPython_Study_2\2020python-202004课件\笔记\a一阶段\01.PythonBase01\bto_student_for_month01"
print(url)
# \\也是转义符号
url = "C:\\nPython_Study_2\2020python-202004课件\笔记\\a一阶段\\01.PythonBase01\\bto_student_for_month01"
print(url)
# r/R 原始字符串(没有转义符)
url = r"C:\nPython_Study_2\2020python-202004课件\笔记\a一阶段\01.PythonBase01\bto_student_for_month01"
print(url)
字符串格式化
"""
字符串%(变量)
"我的名字是%s,年龄是%s" % (name, age)
类型码:
%s 字符串 %d整数 %f 浮点数(%.1f表示 浮点数精度为 1)
"""
source = 0
for item in range(3):
number01 = random.randint(1, 11) # 生成第一个数
number02 = random.randint(1, 11) # 生成第二个数
# str = "开始计算:" + str(number01) + " + " + str(number02) + " = \t" # 字符串拼接
# ----------------------------------------------------------
str = "开始计算: %d + %d = \t"%(number01,number02) # 字符串拼接,字符串格式化
# ----------------------------------------------------------
if int(input(str)) == number01 + number02:
print("回答正确 + 10 分")
source += 10
else:
print("回答错误")
print("您的总成绩为:", source)
通用操作str
数学运算符
"""
数学运算符
1. +:用于拼接两个容器
2. +=:用原容器与右侧容器拼接,并重新绑定变量
3. *:重复生成容器元素
4. *=:用原容器生成重复元素, 并重新绑定变量
5. < <= > >= == !=:依次比较两个容器中元素,一但不同则返回比较结果。
"""
str01 = "悟空"
str02 = "八戒"
# 字符串拼接
str03 = str01 + str02
# 字符串累加
str01 += str02
print(str03)
print(str01)
# 字符串可以乘运算(重复生成元素)
print(str02*5)
# 字符串可以比较运算 依次比较两个容器中的元素、一旦不同则返回比较结果
print("a悟空" > "b八戒")
成员运算符
"""
成员运算符
1. 语法:
数据 in 序列
数据 not in 序列
2. 作用:
如果在指定的序列中找到值,返回bool类型。
"""
print("大圣" in "我叫齐天大圣") # 连着的相同符号
print("八戒" in "我叫齐天大圣")
索引index & 切片slice
"""
索引index
1. 作用:访问容器元素
2. 语法:容器[整数]
3. 说明:
正向索引从0开始,第二个索引为1,最后一个为len(s)-1。
反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)。
切片slice
1. 作用:从容器中取出相应的元素重新组成一个容器。
2. 语法:容器[(开始索引):(结束索引)(:(步长))]
3. 说明:
小括号()括起的部分代表可省略
结束索引不包含该位置元素
步长是切片每次获取完当前元素后移动的偏移量
"""
索引
# coding = utf-8
"""
索引index & 切片slice
-6 -5 -4 -3 -2 -1
我 是 齐 天 大 圣
0 1 2 3 4 5
"""
message = "我是齐天大圣"
# 获取正数第三个字
print(message[2])
# 获取最后一个字
print(message[-1])
切片
"""
切片 slice
"""
# 获取最后一个字
print(message[0:2]) # 我叫
# 开始值默认为开头
print(message[:2]) # 我叫
# 结束值默认末尾
print(message[-2:]) # 大圣
# 取全部
print(message[:])
# 倒置取数
print(message[-2:-5:-1])
# 全部倒置取数
print(message[::-1])
练习
"""
练习:在控制台中获取一个字符串
1:打印第一个字符
2:打印最后一个字符
3:打印倒数第三个字符
4:打印前两个字符
5:倒叙打印字符
6:如果字符串长度是奇数,则打印中间字符
"""
# string = "我是常胜不败不胜"
string = input("请输入一段话:")
# 1:打印第一个字符
print("打印第一个字符:%s"%(string[0]))
print("打印第一个字符:%s"%(string[:1]))
# 2:打印最后一个字符
print("打印最后一个字符:%s"%(string[len(string)-1]))
print("打印最后一个字符:%s"%(string[len(string)-1:len(string)]))
print("打印最后一个字符:%s"%(string[-1:]))
# 3:打印倒数第三个字符
print("打印倒数第三个字符:%s"%(string[-3:-4:-1]))
print("打印倒数第三个字符:%s"%(string[-3]))
# 4:打印前两个字符
print("打印前两个字符:%s"%(string[:2:1]))
# 5:倒叙打印字符
print("倒叙打印字符:%s"%(string[::-1]))
# 6:如果字符串长度是奇数,则打印中间字符
if len(string) % 2 == 0:
print("倒叙打印字符 偶数正常打印:%s"%(string))
else:
print("倒叙打印字符:%s"%(string[::2]))
homework
# coding = utf-8
"""
3. 按照以下格式,输出变量name = "悟空",age = 800,score = 99.5
我叫xx,年龄是xx,成绩是xx。
4. 在控制台中获取一个整数作为边长.
根据边长打印矩形.
例如:4
****
* *
* *
****
6
******
* *
* *
* *
* *
******
5.在控制台中录入一个字符串,判断是否为回文.
判断规则:正向与反向相同.
上海自来水来自海上
6. (扩展)一个小球从100m的高度落下
每次弹回原高度的一半.
计算:总共弹起来多少次(最小弹起高度0.01m).
总共走了多少米
"""
"""
3. 按照以下格式,输出变量name = "悟空",age = 800,score = 99.5
我叫xx,年龄是xx,成绩是xx。
"""
name = "悟空"
age = 800
score = 99.56
print("我叫:%s,年龄是:%d,成绩是:%1.f" % (name, age, score))
"""
4. 在控制台中获取一个整数作为边长.
根据边长打印矩形.
例如:4
****
* *
* *
****
6
******
* *
* *
* *
* *
******
"""
number = int(input("请输入一个整数打印图形:"))
for i in range(1, number + 1):
if i in (1, number):
print("*" * number)
else:
print("*" * 1 + " " * (number - 2) + "*" * 1)
"""
5.在控制台中录入一个字符串,判断是否为回文.
判断规则:正向与反向相同.
上海自来水来自海上
"""
bool_flag = False
string = input("请输入字符串判断是否为回文:")
for i in range(1, len(string) - 1):
if string[i - 1] == string[-i]:
continue
print(string[i - 1] + "----" + string[-i], end="/")
else:
print("不是回文")
break
else:
print("是回文")
# 切片方式判断
if string[::] == string[::-1]:
print("是回文")
else:
print("不是回文")
"""
6. (扩展)一个小球从100m的高度落下
每次弹回原高度的一半.
计算:总共弹起来多少次(最小弹起高度0.01m).
总共走了多少米
"""
hight = 100
times = 0
total = 100
while hight/2 >= 0.01:
times += 1
hight = hight / 2
total += hight
print(times)
print(total)