一、if语句
1.1 语法格式
(1)语法:if条件表达式:
(2)执行的流程:if语句在执行时,会先对条件表达式进行求值判断;
如果为True,则执行if后的语句;
如果为False,则不执行。
if True:print("Hello World")#返回Hello World
if False:print("Hello World")#返回不执行
(3)代码块
希望if可以控制多条语句,则可以在if后跟着一个代码块。
什么是代码块?
代码块就是保存这一组代码,同一个代码块中的代码,要么都执行,要么都不执行。代码块就是一种为代码分组的机制。
#希望if可以控制多条语句,则可以在if后跟着一个代码块
#什么是代码块?
#代码块就是保存这一组代码,同一个代码块中的代码,要么都执行,要么都不执行。
#代码块就是一种为代码分组的机制。
num=10
if num>20:
#代码块
print("num比20大") #这个if语句相当于:if num>20:print("num比20大")【在一行中的if形式】
print("你好")##这个print有缩进,受if条件控制,
print("Hello World")#这个print没有缩进,不受if条件控制
num=30
if 20<num<40:#逻辑语句
print("num比20大比40小")
二、input()函数
2.1、需求
获取用户输入的用户名,用户名是admin 欢迎访问
2.2、返回值的类型
str=input() #返回值是string类型
value=int(input('请输入你的工资:'))#类型转换
if value>=10000: #注意比较的类型,input()返回的数据类型是string
print('你太厉害了')
2.3、代码示例
# 需求:获取用户输入的用户名,用户名是admin 欢迎访问
username=input("请输入用户名:") #返回值是string类型,"请输入用户名:"为提示内容
if username=='admin'
print("欢迎光临")
三、if-else语句
3.1、语法格式
value=int(input('请输入你的工资:'))#类型转换
if value>=2000: #注意比较的类型,input()返回的数据类型是string
print('你该加油了')
else:
print("咋混的,兄弟?")
四、if-elif-else语句
4.1、语法格式
4.2、执行规则
if-elif-…-else的执行是按从前往后的顺序依次查找对应的条件,条件匹配上则执行对应的代码块,并终止后面的(elif…-else)的条件查找。
#if-elif-...-else:执行按从前往后的顺序依次查找对应的条件,条件匹配上则执行对应的代码块,并终止后面的elif..-else的条件查找。
value=int(input('请输入你的工资:'))#类型转换
#对比一:
if value>=30000: #注意比较的类型,input()返回的数据类型是string
print('有钱就是任性')
elif value>=20000:
print('有钱真好')
elif value>=10000:
print('哥也月薪上万了')
elif value>=5000:
print('工资还说的过去')
elif value>=2000:
print('你该加油了')
else:
print("咋混的,兄弟?")
#对比二
if value>=2000: #若输入的是20000,则此程序只输出“你该加油了”,跟上面的程序执行结果完全不一样,上面的程序执行结果为“有钱真好”
print('你该加油了')
elif value>=5000:
print('工资还说的过去')
elif value>=10000:
print('哥也月薪上万了')
elif value>=20000:
print('有钱真好')
elif value>=30000: #注意比较的类型,input()返回的数据类型是string
print('有钱就是任性')
else:
print("咋混的,兄弟?")
五、if语句练习
5.1、练习一
#判断月份属于哪个季节
month=input("请输入一个月份")
#先把不正确的月份排除
if month>12 or month<1:
print(month,"月份不存在")
#判断月份
elif 3<=month<=5:
print(month, "春季")
elif 6<=month<=8:
print(month, "夏季")
elif 9<=month<=11:
print(month, "秋季")
else:
print(month, "冬季")
5.2、练习二
'''
编写一个程序,获取用户输入的整数,通过显示来判断这个数是奇数还是偶数
'''
#获取用户输入的数
num=int(input('请输入一个任意的整数:'))
#判断num是奇数还是偶数
if num%2==0:
print(num,'是偶数')
else:
print(num,'是奇数')
5.3、练习三
'''
编写一个程序,检查任意一个年份是否是闰年
若果一个年份可以被4整除,但不能被100整除,或者可以被400整除,这个年份就是闰年
'''
year=int(input('请输入任意年份:'))
if year % 4==0 and year %100 !=0 or year % 400 ==0:
print(year,'是闰年')
else:
print(year,'是平年')
5.4、练习四
'''
我家的狗5岁,5岁的狗相当于人多大的年龄呢?
狗的前两年,每一年相当于人的10.5岁,然后每增加1年就增加4岁,
比如,5岁的狗狗相当于人类的年龄是多少:10.5+10.5+4+4+4=33岁
编写一个程序,获取用户输入狗的年龄,然后判断其相当于人的年龄
如果用户输入负数,请显示错误信息
'''
#方式一
#获取狗的年龄
dog_age=float(input('请输入狗狗的年龄:'))
#定义人的年龄
person_age=0
#如果够的年龄在两岁以下(包含2岁)
if dog_age<=0:
print('年龄不合法')
elif dog_age<=2:
person_age=dog_age*10.5
#如果狗的年龄在两岁以上
else:
#先计算两岁
person_age=2*10.5
#计算超过两岁以上的年龄
# person_age=person_age+(dog_age-2)*4
person_age+=(dog_age-2)*4
if dog_age>0:
print(dog_age,'岁的狗,年龄相当于',person_age,'岁的人')
#方式二
#获取狗的年龄
dog_age=float(input('请输入狗狗的年龄:'))
#定义人的年龄
person_age=0
#如果够的年龄在两岁以下(包含2岁)
if dog_age>0:
if dog_age<=2:
person_age=dog_age*10.5
#如果狗的年龄在两岁以上
else:
#先计算两岁
person_age=2*10.5
#计算超过两岁以上的年龄
# person_age=person_age+(dog_age-2)*4
person_age+=(dog_age-2)*4
print(dog_age, '岁的狗,年龄相当于', person_age, '岁的人')
else:
print('年龄不合法')
六、循环语句
6.1、循环语句
循环语句可以使指定的代码块重复执行指定的次数。
主要有:while语句和for语句
循环三要素:
(1)初始化的表达式,通过初试化来定义变量;
(2)条件表达式,条件表达式用来设置循环执行的条件;
(3)更新表达式,修改初始化变量的值。
6.2、continue 和 break
(1)continue:可以用来跳过当次循环。
(2)break:可以立即退出循环语句,包括循环中的else语句。
#continue
i=0
while i<6:
i += 1
if i==2:
continue
print(i)
else:
print('hello')
#break
i=0
while i<6:
i += 1
if i==2:# 内层循环,控制宽度,或者行
break
print(i)
else:
print('hello')
6.3、while循环语句
i=0
while i<10:#决定了执行的次数
# i+=1#返回1-10
print(i)
i+=1 #返回0-9
else:#条件为False,执行下面的代码
print('else语句执行了')
while循环练习:
'''
求100以内所有偶数之和
'''
#获取所有100以内的数
i=0
#定义一个变量,保存所有偶数的和
result=0
while i<100:
i+=1
#判断i是否为偶数
if i % 2 ==0:
#计算所有的偶数和
result+=i
print(result)
七、条件控制语句练习
7.1、练习一
求1000以内所有的水仙花数。
定义:水仙花数指的是一个n位数(n>=3)的每个位数上的数字的n次幂之和等于它本身。
例如,13+53+3**3=153
#获取1000以内所有的三位数
i=100
while i<1000:
#假设i的百位数是a,十位数b,个位数c
#求百位数
a=i//100
#求十位数
b=i//10%10
#个位数
c=i%10
print(i,a,b,c)
i+=1
7.2、练习二
获取用户输入的任意数,判断其是否是质数。
定义:只能被1和它本身的数就是质数,注意1不是质数
# 获取用户输入的任意数
num=int(input("请输入一个任意大于1的整数:"))
#定义一个变量
i=2
#创建一个标记,用来记录num是否是质数,默认是质数
flag=True
while i < num:
if num%i==0:#如果这个条件成立,则证明num肯定不是质数
flag=False
# print(num)
i += 1
if flag:
print(num,'是质数')
else:
print(num,'不是质数')
7.3、练习三
在控制台输出如下图形:
*****
*****
*****
*****
*****
#方式一
# 定义变量,控制图形的高度
i=0
while i < 5: #控制高度
print('*****')
print('*****')
print('*****')
print('*****')
print('*****')
i += 1
# 方式二
# 定义变量,控制图形的高度
i = 0
while i < 5: # 控制高度
print('*', end='')
print('*', end='') # end表示不换行
print('*', end='')
print('*', end='')
print('*', end='')
print()
i += 1
# 方式三,循环嵌套
# 定义变量,控制图形的高度
i = 0
while i < 5: # 外层循环,控制高度,或者列
j=0
while j<5: # 内层循环,控制宽度,或者行
print('*', end='') # end表示不换行
j+=1
print()
i += 1
7.4、练习四
在控制台输出如下图形:
*
**
***
****
*****
i=0
while i<5:# 外层循环,控制高度,或者列
j=0
while j<i+1:# 内层循环,控制宽度,或者行
print('*', end='') # end表示不换行
j += 1
print()
i += 1
7.5、练习五
在控制台输出99乘法表:
11=1
12=2 2*2=4
#创建外层循环来控制高度
i=0
while i<9:# 外层循环,控制高度,或者列
i += 1
j=0
while j<i:# 内层循环,控制宽度,或者行
j += 1
print(f'{j}*{i}={i*j} ',end='')
print()#表示换行
7.6、练习六
猜数字游戏:随机1-10个数字,如果猜对正确,如果没有才对错误,给用户9次机会,最终结果要求用户一次都猜不对。
思路:可以先拿到用户猜过的数字,我可以随机一个数字,去和用户猜过的数字作比对,如果这个循环的数字没有在用户猜过的数字当中,那么这个数字就是我们需要的答案。
'''
练习六、猜数字游戏,随机1-10个数字,如果猜对正确,如果没有才对错误
给用户9次机会,最终结果要求用户一次都猜不对。
思路:可以先拿到用户猜过的数字,我可以随机一个数字,
去和用户猜过的数字作比对,如果这个循环的数字没有在用户猜过的数字当中,
那么这个数字就是我们需要的答案。
'''
import random
#定义一个列表,用来存储用户猜过的数字
lst=[]
i=0
while i<9:
number=int(input('请输入一个1-10的数字:'))
#把用户猜过的数字追加到列表当中
lst.append(number)
print('对不起,你没有猜对')
i+=1
while True:
number_x=random.randint(1,10) #1<=x<=10
if number_x in lst:
continue
else:
break
print('正确号码是:',number_x)
7.7、练习七
求100以内的所有质数。
'''
练习七:求100以内的所有质数
'''
i=2
while i<=100:
flag = True
#判断i是否是质数
#获取所有有可能成为i的因数
j=2
while j<i:
#判断i是否能被j整除,能整除,i不是质数
if i%j==0:
flag=False
j+=1
if flag:
print(i)
i+=1
7.8、练习八-程序性能优化
求10000以内的所有质数。
新手程序员做功能,老程序员做程序性能优化。
'''
练习七:求10000以内的所有质数
'''
#方式一:
from time import *
#获取程序开始的时间
start=time() #检测程序的性能
i=2
while i<=10000:
flag = True
#判断i是否是质数
#获取所有有可能成为i的因数
j=2
while j<i:
#判断i是否能被j整除,能整除,i不是质数
if i%j==0:
flag=False
j+=1
if flag:
pass
# print(i)
i+=1
end=time()
print(f'程序花费的时间:{end-start}秒')
#方式二:性能优化一,一旦判断i不是质数,就可以停止内层循环,break方法
from time import *
#获取程序开始的时间
start=time() #检测程序的性能
i=2
while i<=10000:
flag = True
#判断i是否是质数
#获取所有有可能成为i的因数
j=2
while j<i:
#判断i是否能被j整除,能整除,i不是质数
if i%j==0:
flag=False
break #程序优化一:一旦判断i不是质数,就可以停止内层循环
j+=1
if flag:
pass
# print(i)
i+=1
end=time()
print(f'程序花费的时间:{end-start}秒')
#方式三:性能优化二,判断i一半的数据,即i**0.5
from time import *
#获取程序开始的时间
start=time() #检测程序的性能
i=2
while i<=10000:
flag = True
#判断i是否是质数
#获取所有有可能成为i的因数
j=2
while j<=i**0.5:#性能优化二:判断i一半的数据
#判断i是否能被j整除,能整除,i不是质数
if i%j==0:
flag=False
break #程序优化一:一旦判断i不是质数,就可以停止内层循环
j+=1
if flag:
pass
# print(i)
i+=1
end=time()
print(f'程序花费的时间:{end-start}秒')