- 条件判断语句(if语句)
- 语法:if 条件表达式 :
- 代码块
- 执行的流程:if语句在执行时,会先对条件表达式进行求值判断,
- 如果为True,则执行if后的语句
- 如果为False,则不执行
- 默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,
- 则可以在if后跟着一个代码块
- 代码块
- 代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
- 代码块就是一种为代码分组的机制
- 如果要编写代码块,语句就不能紧随在:后边,而是要写在下一行
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 鲁迅说过:
- 世上本来没有路,走的人多了自然就有了!
- xxxx
- yyyy….
- 缩进有两种方式,一种是使用tab键,一种是使用空格(四个)
- Python的官方文档中推荐我们使用空格来缩进
- Python代码中使用的缩进方式必须统一
- “translate_tabs_to_spaces”: true,
- if False : print(‘你猜我出来么?’)
- if num > 10 : print(‘num比10大!’)
- print(‘谁也管不了我’)
- print(‘hello’)
- 可以使用逻辑运算符来连接多个条件,
- 如果希望所有条件同时满足,则需要使用and
- 如果希望只要有一个条件满足即可,则需要使用or
- if num > 10 and num < 20 :
- print(‘num比10大,num比20小!’)
- if 10 < num < 20 :
- print(‘num比10大,num比20小!’)
- 在命令行让用户输入一个用户名,获取用户输入,并进行判断
- 如果用户输入的用户名是admin,则显示欢迎管理员光临
- 如果用户输入的是其他的用户名,则什么也不做
- input()函数
- 该函数用来获取用户的输入
- input()调用后,程序会立即暂停,等待用户输入
- 用户输入完内容以后,点击回车程序才会继续向下执行
- 用户输入完成以后,其所输入的的内容会以返回值得形式返回
- 注意:input()的返回值是一个字符串
- input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示
- a = input(‘请输入任意内容:’)
- print(‘用户输入的内容是:’,a)
- input()也可以用于暂时阻止程序结束
- 获取用户输入的用户名
- 判断用户名是否是admin
- age = int(input(‘请输入你的年龄:’))
- 如果用户的年龄大于18岁,则显示你已经成年了
- if age >= 18 :
- print(‘你已经成年了~~~’)
- if-else语句
- 语法:
- if 条件表达式 :
- 代码块
- else :
- 代码块
- 执行流程:
- if-else语句在执行时,先对if后的条件表达式进行求值判断
- 如果为True,则执行if后的代码块
- 如果为False,则执行else后的代码块
- if-elif-else语句
- 语法:
- if 条件表达式 :
- 代码块
- elif 条件表达式 :
- 代码块
- elif 条件表达式 :
- 代码块
- elif 条件表达式 :
- 代码块
- else :
- 代码块
- 执行流程:
- if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
- 如果表达式的结果为True,则执行当前代码块,然后语句结束
- 如果表达式的结果为False,则继续向下判断,直到找到True为止
- 如果所有的表达式都是False,则执行else后的代码块
- if-elif-else中只会有一个代码块会执行
- if age > 200 :
- print(‘活着可真没劲呢!’)
- elif age > 100 :
- print(‘你也是老大不小了!’)
- elif age >= 60 :
- print(‘你已经退休了!’)
- elif age >= 30 :
- print(‘你已经是中年了!’)
- elif age >= 18 :
- print(‘你已经成年了!’)
- else :
- print(‘你还是个小孩!’)
- 优化:
- 获取用户输入的整数
- num = int(input(‘请输入一个任意的整数:’))
- print(‘你输入的整数是:’,enter_an_integer)
- # 显示num是奇数还是偶数
- if num % 2 == 0 :
- print(num , “是偶数”)
- else :
- print(num , ‘是奇数’)
- 优化解答
- dog_age = float(input(‘请输入狗的年龄:’))
- like_person_age = 0
- 检查用户输入的是否是负数
- if dog_age < 0 :
- print(‘你的输入不合法!’)
- # 如果狗的年龄在两岁以下(包含两岁)
- elif dog_age <= 2 :
- # 直接将当前的年龄乘以10.5
- like_person_age = dog_age * 10.5
- # 如果狗的年龄在两岁以上
- else :
- # 计算前两岁相当于人类的年纪
- like_person_age = 2 * 10.5
- # 计算超过两岁的部分相对于人类的年纪,并进行相加
- like_person_age += ( dog_age - 2 ) * 4
- if dog_age > 0 :
- print(dog_age,’岁的狗,年纪相当于’,like_person_age,’岁的人’)
- 在if也可以去嵌套if,代码块是可以嵌套的,每增加一个缩进的级别,代码块就低一级
- 检查用户的输入是否合法
- if dog_age > 0 :
- # 如果狗的年龄在两岁以下(包含两岁)
- if dog_age <= 2 :
- # 直接将当前的年龄乘以10.5
- like_person_age = dog_age * 10.5
- # 如果狗的年龄在两岁以上
- else :
- # 计算前两岁相当于人类的年纪
- like_person_age = 2 * 10.5
- # 计算超过两岁的部分相对于人类的年纪,并进行相加
- like_person_age += ( dog_age - 2 ) * 4
- print(dog_age,’岁的狗,年纪相当于’,like_person_age,’岁的人’)
- else :
- print(‘请输入一个合法的年龄!’)
- 优化结果
- 获取小明的成绩
- score = float(input(‘请输入你的期末成绩(0-100):’))
- # 打印分割线
- print(“=”*40)
- # 检查用户的输入是否合法
- if 0 <= score <= 100 :
- # 判断发给的奖励
- if score == 100 :
- print(‘宝马,拿去玩!’)
- elif score >= 80 :
- print(‘苹果手机,拿去玩!’)
- elif score >= 60 :
- print(‘参考书,拿去玩!’)
- else :
- print(‘棍子一根!’)
- else :
- # 用户输入的不合法,弹出一个友好提示
- print(‘你输入的内容不合法,拉出去毙了!’)
- while循环
- 语法:
- while 条件表达式 :
- 代码块
- else :
- 代码块
- 执行流程:
- while语句在执行时,会先对while后的条件表达式进行求值判断,
- 如果判断结果为True,则执行循环体(代码块),
- 循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
- 直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块
- 条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!
- while True :
- print(‘hello’)
- 循环的三个要件(表达式)
- 初始化表达式,通过初始化表达式初始化一个变量
- i = 0
- # 条件表达式,条件表达式用来设置循环执行的条件
- while i < 10 :
- print(i)
- # 更新表达式,修改初始化变量的值
- i += 1
- 创建一个执行十次的循环
- 创建一个5次的循环
- i = 0
- while i < 5:
- i += 1
- if i == 2:
- continue
- print(i)
- else :
- print(‘循环结束’)
- 求100以内所有的奇数之和
- 优化
- 获取所有100以内数
- i = 0
- # 创建一个变量,用来保存结果
- result = 0
- while i < 100 :
- i += 1
- # 判断i是否是奇数
- if i % 2 != 0:
- result += i
- print(‘result =’,result)
- 求100以内所有7的倍数之和,以及个数
- 优化结果
- 求100以内所有7的倍数之和,以及个数
- i = 7
- 创建一个变量,来保存结果
- result = 0
- 创建一个计数器,用来记录循环执行的次数
- 计数器就是一个变量,专门用来记录次数的变量
- count = 0
- while i < 100:
- 为计数器加1
- count += 1
- result += i
- i += 7
- print(‘总和为:’,result,’总数量为:’,count)
- 获取1000以内的三位数
- 获取用户输入的任意数,判断其是否是质数。
- 判断num是否是质数,只能被1和它自身整除的数就是质数
- 获取到所有的可能整除num的整数
- 创建一个变量,用来记录num是否是质数,默认认为num是质数
- 在控制台中打印如下图形
- *
- *
- *
- *
- *
- 创建一个循环来控制图形的高度
- 循环嵌套时,外层循环没执行一次,内存循环就要执行一圈
- i = 0
- while i < 5:
- # 创建一个内层循环来控制图形的宽度
- j = 0
- while j < 5:
- print(“* “,end=’’)
- j += 1
- print()
- i += 1
- * j<1 i=0
- ** j<2 i=1
- * j<3 i=2
- j<4 i=3
- * j<5 i=4
- *
- *
- **
- *
- 创建一个外层循环来控制图形的高度
- 求100以内所有的质数
- 创建一个循环,求1-100以内所有的数
- 获取程序开始的时间
- 获取程序结束的时间
- 计算程序执行的时间
- 显示欢迎信息
- 显示身份选择的信息
- 游戏的身份选择
- 打印一条分割线
- 根据用户的选择来显示不同的提示信息
- 进入游戏
- 创建变量,来保存玩家的生命值和攻击力
- 创建一个变量,保存boss的生命值和攻击力
- 打印一条分割线
- 显示玩家的信息(攻击力、生命值)
- 由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
第三部分 流程控制语句
Python代码在执行时是按照自上向下顺序执行的。通过流程控制语句,可以改变程序的执行顺序,也可以让指定的程序反复执行多次
流程控制语句分成两大类:条件判断语句,循环语句
条件判断语句(if语句)
if语句
条件判断语句(if语句)
语法:if 条件表达式 :
代码块
执行的流程:if语句在执行时,会先对条件表达式进行求值判断,
如果为True,则执行if后的语句
如果为False,则不执行
默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,
则可以在if后跟着一个代码块
代码块
代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
代码块就是一种为代码分组的机制
如果要编写代码块,语句就不能紧随在:后边,而是要写在下一行
代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
鲁迅说过:
世上本来没有路,走的人多了自然就有了!
xxxx
yyyy….
缩进有两种方式,一种是使用tab键,一种是使用空格(四个)
Python的官方文档中推荐我们使用空格来缩进
Python代码中使用的缩进方式必须统一
“translate_tabs_to_spaces”: true,
if False : print(‘你猜我出来么?’)
num = 10
if num > 10 : print(‘num比10大!’)
print(‘谁也管不了我’)
if False :
print(123)
print(456)
print(789)
print(101112)
print(‘hello’)
num = 28
可以使用逻辑运算符来连接多个条件,
如果希望所有条件同时满足,则需要使用and
如果希望只要有一个条件满足即可,则需要使用or
if num > 10 and num < 20 :
print(‘num比10大,num比20小!’)
if 10 < num < 20 :
print(‘num比10大,num比20小!’)
在命令行让用户输入一个用户名,获取用户输入,并进行判断
如果用户输入的用户名是admin,则显示欢迎管理员光临
如果用户输入的是其他的用户名,则什么也不做
username=input(“输入用户名”)
if username==”admin”:
print(“欢迎管理员光临”)
input函数
input()函数
该函数用来获取用户的输入
input()调用后,程序会立即暂停,等待用户输入
用户输入完内容以后,点击回车程序才会继续向下执行
用户输入完成以后,其所输入的的内容会以返回值得形式返回
注意:input()的返回值是一个字符串
input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示
a = input(‘请输入任意内容:’)
print(‘用户输入的内容是:’,a)
input()也可以用于暂时阻止程序结束
获取用户输入的用户名
username = input(‘请输入你的用户名:’)
判断用户名是否是admin
if username == ‘admin’ :
print(‘欢迎管理员光临!’)
if-else语句
让用户在控制台中输入一个年龄
age = int(input(‘请输入你的年龄:’))
如果用户的年龄大于18岁,则显示你已经成年了
if age >= 18 :
print(‘你已经成年了~~~’)
if-else语句
语法:
if 条件表达式 :
代码块
else :
代码块
执行流程:
if-else语句在执行时,先对if后的条件表达式进行求值判断
如果为True,则执行if后的代码块
如果为False,则执行else后的代码块
age = 7
if age > 17 :
print(‘你已经成年了‘)‘)
else :
print(‘你还未成年
if-elif-else语句
if-elif-else语句
语法:
if 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
else :
代码块
执行流程:
if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
如果表达式的结果为True,则执行当前代码块,然后语句结束
如果表达式的结果为False,则继续向下判断,直到找到True为止
如果所有的表达式都是False,则执行else后的代码块
if-elif-else中只会有一个代码块会执行
age = 210
if age > 200 :
print(‘活着可真没劲呢!’)
elif age > 100 :
print(‘你也是老大不小了!’)
elif age >= 60 :
print(‘你已经退休了!’)
elif age >= 30 :
print(‘你已经是中年了!’)
elif age >= 18 :
print(‘你已经成年了!’)
else :
print(‘你还是个小孩!’)
age = 68
if age >= 18 and age < 30 :
print(‘你已经成年了!’)
elif age >= 30 and age < 60 :
print(‘你已经中年了!’)
elif age >= 60 :
print(‘你已经退休了!’)
练习
练习1:
编写一个程序,获取一个用户输入的整数。然后通过程序显示这个数是奇数还是偶数。
from cgi import print_form
enter_an_integer = int(input(‘输入一个整数:’))
print(‘你输入的整数是:’,enter_an_integer)
if enter_an_integer % 2 == 0:
print(‘这个数是偶数’)
if enter_an_integer % 2 == 1:
print(‘这个数是奇数’)
优化:
获取用户输入的整数
num = int(input(‘请输入一个任意的整数:’))
print(‘你输入的整数是:’,enter_an_integer)
# 显示num是奇数还是偶数
if num % 2 == 0 :
print(num , “是偶数”)
else :
print(num , ‘是奇数’)
练习2:
编写一个程序,检查任意一个年份是否是闰年。如果一个年份可以被4整除不能被100整除,或者可以被400整除,这个年份就是闰年
year = int(input(‘输入一个年份’))
#print(‘你输入的是’,year)
if year % 4 == 0 and year %100!=0 or year %400 == 0:
print(‘这个年份是闰年’)
else:
print(‘这个年份不是闰年’)
练习3:
我家的狗5岁了,5岁的狗相当于多大年龄的人呢?其实非常简单,狗的前两年每一年相当于人类的10.5岁,然后每增加一年就增加四岁。那么5岁的狗相等于人类的年龄就应该是10.5+10.5+4+4+4 = 33岁编写一个程序,获取用户输入的狗的年龄,然后通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息
dog_age = float(input(‘请输入狗的年龄:’))
print(‘狗的年龄是:’,dog_age)
if dog_age < 0 :
print(‘你输入的’,dog_age,’不是正确的年龄’)
elif dog_age <= 2 :
dog_age = 10.5
print(‘狗的年龄是:’,dog_age)
else :
dog_age = 21+(dog_age-2)*4
print(‘狗的年龄是’,dog_age)
优化解答
dog_age = float(input(‘请输入狗的年龄:’))
like_person_age = 0
检查用户输入的是否是负数
if dog_age < 0 :
print(‘你的输入不合法!’)
# 如果狗的年龄在两岁以下(包含两岁)
elif dog_age <= 2 :
# 直接将当前的年龄乘以10.5
like_person_age = dog_age * 10.5
# 如果狗的年龄在两岁以上
else :
# 计算前两岁相当于人类的年纪
like_person_age = 2 * 10.5
# 计算超过两岁的部分相对于人类的年纪,并进行相加
like_person_age += ( dog_age - 2 ) * 4
if dog_age > 0 :
print(dog_age,’岁的狗,年纪相当于’,like_person_age,’岁的人’)
在if也可以去嵌套if,代码块是可以嵌套的,每增加一个缩进的级别,代码块就低一级
检查用户的输入是否合法
if dog_age > 0 :
# 如果狗的年龄在两岁以下(包含两岁)
if dog_age <= 2 :
# 直接将当前的年龄乘以10.5
like_person_age = dog_age * 10.5
# 如果狗的年龄在两岁以上
else :
# 计算前两岁相当于人类的年纪
like_person_age = 2 * 10.5
# 计算超过两岁的部分相对于人类的年纪,并进行相加
like_person_age += ( dog_age - 2 ) * 4
print(dog_age,’岁的狗,年纪相当于’,like_person_age,’岁的人’)
else :
print(‘请输入一个合法的年龄!’)
练习4:
从键盘输入小明的期末成绩:当成绩为100时,'奖励一辆BMW'当成绩为[80-99]时,'奖励一台iphone'当成绩为[60-79]时,'奖励一本参考书'其他时,什么奖励也没有
final_result = float(input(‘请输入期末成绩:’))
print(‘你的期末成绩是:’,final_result)
if final_result == 100 :
print(‘奖励一辆BMW’)
elif final_result >= 80 and final_result<=99 :
print(‘奖励一台iphone’)
elif final_result >= 60 and final_result <= 79 :
print(‘奖励一本参考书’)
else :
print(‘没有奖励’)
优化结果
获取小明的成绩
score = float(input(‘请输入你的期末成绩(0-100):’))
# 打印分割线
print(“=”*40)
# 检查用户的输入是否合法
if 0 <= score <= 100 :
# 判断发给的奖励
if score == 100 :
print(‘宝马,拿去玩!’)
elif score >= 80 :
print(‘苹果手机,拿去玩!’)
elif score >= 60 :
print(‘参考书,拿去玩!’)
else :
print(‘棍子一根!’)
else :
# 用户输入的不合法,弹出一个友好提示
print(‘你输入的内容不合法,拉出去毙了!’)
练习5:
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:高:180cm以上; 富:1000万以上; 帅:500以上;如果这三个条件同时满足,则:'我一定要嫁给他'如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'如果三个条件都不满足,则:'不嫁!'
height = float(input(‘请输入身高(0-300)c:’))
wealth = float(input(‘请输入财富xxx万元:’))
face= float(input(‘请输入颜值(0-800)cm:’))
if height > 180 and wealth > 1000 and face > 500:
print(‘我一定要嫁给他’)
elif height > 180 or wealth >1000 or height > 180 :
print(‘嫁吧,比上不足,比下有余。’)
else:
print(‘不嫁!’)
循环语句
循环语句可以使指定的代码块重复指定的次数
循环语句分成两种,while循环 和 for循环
while循环
while循环
语法:
while 条件表达式 :
代码块
else :
代码块
执行流程:
while语句在执行时,会先对while后的条件表达式进行求值判断,
如果判断结果为True,则执行循环体(代码块),
循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块
条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!
while True :
print(‘hello’)
循环的三个要件(表达式)
初始化表达式,通过初始化表达式初始化一个变量
i = 0
# 条件表达式,条件表达式用来设置循环执行的条件
while i < 10 :
print(i)
# 更新表达式,修改初始化变量的值
i += 1
创建一个执行十次的循环
i = 0
while i < 10 :
i += 1
print(i,’hello’)
else :
print(‘else中的代码块’)
break \ continue \ pass
break:
可以用来立即退出循环语句(包括else)
continue:
可以用来跳过当次循环
break和continue都是只对离他最近的循环起作用
pass:
是用来在判断或循环语句中占位的
例子:
创建一个5次的循环
i = 0
while i < 5:
if i == 3:
break
print(i)
i += 1
else :
print(‘循环结束’)
i = 0
while i < 5:
i += 1
if i == 2:
continue
print(i)
else :
print(‘循环结束’)
i = 0
if i < 5:
pass
练习
练习1:求100以内所有的奇数之和
求100以内所有的奇数之和
求100以内所有的奇数之和
result = 0
i = 0
while i <= 100 :
i += 1
if i % 2 == 1 :
result = result + i
print(“100以内所有奇数和为:”,result)
优化
获取所有100以内数
i = 0
# 创建一个变量,用来保存结果
result = 0
while i < 100 :
i += 1
# 判断i是否是奇数
if i % 2 != 0:
result += i
print(‘result =’,result)
练习2: 求100以内所有7的倍数之和,以及个数
求100以内所有7的倍数之和,以及个数
求100以内所有7的倍数之和,以及个数
result = 0
i = 7
count = 0
while i < 100:
count += 1
i += 7
result = result + i
print(‘result=’,result)
print(‘j=’,count)
优化结果
求100以内所有7的倍数之和,以及个数
i = 7
创建一个变量,来保存结果
result = 0
创建一个计数器,用来记录循环执行的次数
计数器就是一个变量,专门用来记录次数的变量
count = 0
while i < 100:
为计数器加1
count += 1
result += i
i += 7
print(‘总和为:’,result,’总数量为:’,count)
练习3:求1000以内所有的水仙花数
水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:13 + 53 + 3**3 = 153)。求1000以内所有的水仙花数
获取1000以内的三位数
i = 100
while i < 1000:
# 假设,i的百位数是a,十位数b,个位数c# 求i的百位数a = i // 100# 求i的十位数# b = i // 10 % 10b = (i - a * 100) // 10# 求i的个位数字c = i % 10# print(i , a , b , c)# 判断i是否是水仙花数if a**3 + b**3 + c**3 == i :print(i)i += 1
练习4:判断是否是质数
获取用户输入的任意数,判断其是否是质数。质数是只能被1和它自身整除的数,1不是质数也不是合数。
获取用户输入的任意数,判断其是否是质数。
num = int(input(‘输入一个任意的大于1的整数:’))
判断num是否是质数,只能被1和它自身整除的数就是质数
获取到所有的可能整除num的整数
i = 2
创建一个变量,用来记录num是否是质数,默认认为num是质数
flag = True
while i < num:
# 判断num能否被i整除
# 如果num能被i整除,则说明num一定不是质
if num % i == 0 :
# 一旦进入判断,则证明num不是质数,则需要将flag修改为false
flag = False
i += 1
if flag :
print(num,’是质数’)
else :
print(num,’不是质数’)
循环嵌套
在控制台中打印如下图形
*
*
*
*
*
创建一个循环来控制图形的高度
循环嵌套时,外层循环没执行一次,内存循环就要执行一圈
i = 0
while i < 5:
# 创建一个内层循环来控制图形的宽度
j = 0
while j < 5:
print(“* “,end=’’)
j += 1
print()
i += 1
* j<1 i=0
** j<2 i=1
* j<3 i=2
j<4 i=3
* j<5 i=4
*
*
**
*
i = 0
while i < 5:
j = 0
while j < i + 1:
print(“* “,end=’’)#这里的end=’’是为了使print输出内容不换行
j += 1
print()
i += 1
练习
练习1: 打印99乘法表
打印99乘法表1*1=112=2 22=413=3 23=6 3*3=9... 9*9=81
创建一个外层循环来控制图形的高度
i = 0
while i < 9:
i += 1
# 创建一个内层循环来控制图形的宽度j = 0while j < i:j += 1print(f"{j}*{i}={i*j} ",end="")print()
练习2:求100以内所有的质数
求100以内所有的质数
求100以内所有的质数
创建一个循环,求1-100以内所有的数
i = 2
while i <= 100:
# 创建一个变量,记录i的状态,默认认为i是质数flag = True# 判断i是否是质数# 获取所有可能成为i的因数的数j = 2while j < i:# 判断i能否被j整除if i % j == 0:# i能被j整除,证明i不是质数,修改flag为Falseflag = Falsej += 1# 验证结果并输出if flag :print(i)i += 1
练习优化示例:模块的引入
模块,通过模块可以对Python进行扩展
引入一个time模块,来统计程序执行的时间。time()函数可以用来获取当前的时间,返回的单位是秒
优化前:
求100000以内所有的质数
from time import *
begin = time()
i = 2
while i <= 10000:
flag = True
j = 2
while j < i:
if i % j == 0:
flag = False
j += 1
if flag :
#print(i)
i += 1
end = time()
print(“程序执行花费了:”,end - begin , “秒”)
结果:程序执行花费了: 8.352874279022217 秒
第一次优化:
from time import *
获取程序开始的时间
begin = time()
i = 2
while i <= 10000:
flag = True
j = 2
while j < i:
if i % j == 0:
flag = False
# 一旦进入判断,则证明i一定不是质数,此时内层循环没有继续执行的必要
# 使用break来退出内层的循环
break
j += 1
if flag :
# print(i)
pass
i += 1
获取程序结束的时间
end = time()
计算程序执行的时间
print(“程序执行花费了:”,end - begin , “秒”)
结果:程序执行花费了: 0.9832208156585693 秒
第二次优化:
算法优化:一个数的因数最大是其本身的算术平方根
from time import
begin = time()
i = 2
while i <= 10000:
flag = True
j = 2
while j <= i * 0.5:#这里进行优化
if i % j == 0:
flag = False
break
j += 1
if flag :
# print(i)
pass
i += 1
end = time()
print(“程序执行花费了:”,end - begin , “秒”)
结果: 程序执行花费了: 0.040992021560668945 秒
可见优化程序对提高程序运行效率十分重要。
总练习 小游戏
小游戏 《唐僧大战白骨精》
内容:
1、身份选择
① 显示提示信息
欢迎光临 xxx 游戏!
请选择你的身份:
1.xxx
2.xxx
请选择:x
② 根据用户选择来分配身份(显示不同的提示消息)
1.—-
2.—-
3.—-
2、游戏进行
① 显示玩家的基本信息(攻击力 生命值)
② 显示玩家可以进行的操作:
1、练级
- 提升玩家的攻击力和生命值
2、打BOSS
- 玩家对BOSS进行攻击,玩家要攻击BOSS,BOSS对玩家进行反击
- 计算BOSS是否被玩家消灭,玩家是否被BOSS消灭
- 游戏结束
3、逃跑
- 退出游戏,显示提示信息,游戏结束!
代码:
显示欢迎信息
print(‘-‘_20,’欢迎光临《唐僧大战白骨精》’,’-‘_20)
显示身份选择的信息
print(‘请选择你的身份:’)
print(‘\t1.唐僧’)
print(‘\t2.白骨精’)
游戏的身份选择
player_choose = input(‘请选择[1-2]:’)
打印一条分割线
print(‘-‘*66)
根据用户的选择来显示不同的提示信息
if player_choose == ‘1’:
# 选择1
print(‘你已经选择了1,你将以->唐僧<-的身份来进行游戏!’)
elif player_choose == ‘2’:
# 选择2
print(‘你竟然选择了白骨精,太不要脸了,你将以->唐僧<-的身份来进行游戏!’)
else :
# 选择3
print(‘你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!’)
进入游戏
创建变量,来保存玩家的生命值和攻击力
player_life = 2 # 生命值
player_attack = 2 # 攻击力
创建一个变量,保存boss的生命值和攻击力
boss_life = 10
boss_attack = 10
打印一条分割线
print(‘-‘*66)
显示玩家的信息(攻击力、生命值)
print(f’唐僧,你的生命值是 {player_life} , 你的攻击力是 {player_attack}’)
由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
while True :
# 打印一条分割线
print(‘-‘66)
# 显示游戏选项,游戏正式开始
print(‘请选择你要进行的操作:’)
print(‘\t1.练级’)
print(‘\t2.打BOSS’)
print(‘\t3.逃跑’)
game_choose = input(‘请选择要做的操作[1-3]:’)
# 处理用户的选择
if game_choose == ‘1’ :
# 增加玩家的生命值和攻击力
player_life += 2
player_attack += 2
# 显示最新的信息
# 打印一条分割线
print(‘-‘66)
# 显示玩家的信息(攻击力、生命值)
print(f’恭喜你升级了!,你现在的生命值是 {player_life} , 你的攻击力是 {player_attack}’)
elif game_choose == ‘2’ :
# 玩家攻击boss
# 减去boss的生命值,减去的生命值应该等于玩家的攻击力
boss_life -= player_attack
# 打印一条分割线print('-'*66)print('->唐僧<- 攻击了 ->白骨精<-')# 检查boss是否死亡if boss_life <= 0 :# boss死亡,player胜利,游戏结束print(f'->白骨精<-受到了 {player_attack} 点伤害,重伤不治死了,->唐僧<-赢得了胜利!')# 游戏结束break# boss要反击玩家# 减去玩家的生命值player_life -= boss_attackprint(' ->白骨精<- 攻击了 ->唐僧<-')# 检查玩家是否死亡if player_life <= 0 :# 玩家死亡print(f'你受到了 {boss_attack} 点伤害,重伤不治死了!GAME OVER')# 游戏结束breakelif game_choose == '3' :# 打印一条分割线print('-'*66)# 逃跑,退出游戏print('->唐僧<-一扭头,撒腿就跑!GAME OVER')breakelse :# 打印一条分割线print('-'*66)print('你的输入有误,请重新输入!')
