Python(第三章)流程控制语句、条件表达式、循环语句、跳转语句

第三章

本章概览

介绍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 循环语句

循环语句:反复的重复一件事情,称为循环,循环主要有两种类型

  1. 重复一定次数,称为计次循环,如 for
  2. 一直重复,直到条件不满足时才结束的循环,称为条件循环,这种循环会一直秩序下去,如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):  # 输出9for 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):  # 输出9for 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):  # 输出9for 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):  # 输出9for 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):  # 输出9for 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):  # 输出9for 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):  # 输出9for 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循环之前找到结束条件之前,有两种方式来做到

  1. 使用continue 语句直接跳转到循环的下一个迭代
  2. 使用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)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值