rt_01_分支嵌套案例.py
#分支嵌套
#需求:用户键盘录入年份和对应的月份,输出当前年份,月份对应的天数
#分析:当输入2月份时需要单独判断平年(28天)还是闰年(29天)
#31天对应的月份:1,3,5,7,8,10,12
#30天对应的月份:4,6,9,11
year=eval(input("请输入您要查看的年份:"))
month=eval(input(f"请输入您要查看{year}对应的月份:"))
#判断月份
if month in [1,3,5,7,8,10,12]:
day=31
print(f"年份:{year},月份:{month},天数:{day}")
elif month in [4,6,9,11]:
day=30
print(f"年份:{year},月份:{month},天数:{day}")
elif month==2:
#嵌套if语句,单独判断平年还是闰年
if (year % 4 == 0 and year % 100 != 0) or year % 400 ==0:
day=29
print(f"年份:{year}是闰年,月份:{month},天数:{day}")
else:
day=28
print(f"年份:{year}是平年,月份:{month},天数:{day}")
输出:
rt_02_循环结构.py
#循环结构:while循环和for循环,还有循环中的else结构
#while循环:
#死循环
#while True:
# print("hello python!")
#使用while循环必须满足三个条件
#1、定义初始化循环变量,定义可以统计循环次数的变量
num = 1
#2、判断循环条件
while num <= 10:
print("hello python!")
#3、需改循环条件
num += 1
#求100以内的偶数和(包含100)
a = 0
sum = 0
while a <= 100:
if a % 2 == 0:
#做累加
sum += a
a += 1
print(f"100以内的偶数和为:{sum}")
print("*"*50)
num=0
sum=0
while num<=100:
sum+=2
print(f"100以内的偶数和为:{sum}")
输出:
rt_03_求100以内的水仙花数.py
#求1000以内的水仙花数
#已知水仙花数是一个三位数(100-999)
#满足水仙花的数字的各位数字的立方+十位数字的立方+百位数的立方=本身
#153 = 1**3 + 5**3 + 3**3
num=100
while num <= 999:
ge = num % 10
shi = num // 10 % 10
bai = num //100
if ge**3 + shi**3 + bai**3 == num:
print(f"水仙花数是:{num}")
num += 1
输出:
rt_05_for循环.py
#for循环
#range(stop):默认从1开始到stop结束,左闭右开区间
#range(start,stop),左闭右开
#range(start,stop,step),step默认是1,左闭右开
for num in range(10):
print("hello python!",num)
#求1000以内的水仙花数
import math
for num in range(100,1000):
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if math.pow(ge,3) + math.pow(shi,3) + math.pow(bai,3) == num:
print("水仙花数:",num)
输出:
rt_05_循环嵌套.py
#循环嵌套
#输出一个三角形
# *
# * *
# * * *
# * * * *
# * * * * *
#外层循环控制行
row = 1
while row <= 5:
#内层循环控制列
col = 1
while col <= 5:
print("*",end="\t")
col += 1
print("")
row += 1
print("*"*50)
#外层循环控制行
row = 1
while row <= 5:
#内层循环控制列
col = 1
while col <= row:
print("*",end="\t")
col += 1
print("")
row += 1
print("*"*50)
#九九乘法表
for row in range(1,10):
for col in range(1,row+1):
print(f"{row}*{col}={row*col}",end="\t")
print("")
输出:
rt_06_循环中的else结构.py
#循环中的else结构
# 循环正常结束时执行了else结构
# 循环中断时,
for num in range(10):
print("hello python",num)
if num == 5:
# 中断循环
break
else:
print("这是循环中else结构,什么时候执行呢!")
#从学生信息数据库中查询如花同学的信息
name_list = ["张三","李四","如花","王五"]
find_name = input("请输入您要查找学员的名字:")
for name in name_list:
if find_name == name:
print(f"查询到了{find_name}的学员信息")
break
else:
print (f"您要查询的{find_name}学员信息不存在,请核实!")
输出:
rt_07_流程控制中的关键字.py
#break、continue、pass
# pass:表示占位,保证结构的完整性
if True:
pass
# break:中断循环,一般结合if语句
# continue:跳过本次,继续执行后续操作
num = 0
while num < 10:
num += 1
if num == 5:
continue
print(num)
输出:
rt_08_函数.py
#函数:封装了特定代码块
#作用:减少代码的冗余,提高代码的复用,提高程序的编写效率
#注意:
#定义链接数据库的函数
def get_coon():
print("开始连接数据库。。。")
print("开始连接数据库。。。")
print("开始连接数据库。。。")
#调用函数
get_coon()
#练习
#练习一:打印图形
#1、打印一条横线
def print_line():
print("-"*20)
print_line()
#2、打印多条横线
def print_lines(num):
i = 0
while i < num:
print_line()
i += 1
num=eval(input("请输入要打印横线的条数:"))
print_lines(num )
#练习二:函数计算
#1、求三个数之和
def sum_num(a,b,c):
return a+b+c
result=sum_num(1,2,3)
print(result)
#2、求三个数平均值
def average_sum(a,b,c):
return (a+b+c)/3
result=average_sum(2,3,4)
print(result)
输出:
rt_09_函数的具体使用.py
# 定义求和函数
def func_sum():
a = 10
b = 20
result = a + b
print(f"{a}+{b}={result}")
func_sum()
# 定义带有参数的函数
def sum_num(num1, num2):# 形式参数:在定义函数定义的参数,告诉调用者在调用这个函数时需要传递参数
"""
求和函数:求两个数的和
:param num1:
:param num2:
:return:
"""
result = num1 + num2
print(f"{num1} + {num2} = {result}")
# 返回最终求和结果,可以返回多个
return result, num2, num1
sum_num(13, 14)# 实际参数:实际参数实质性的运算
print(sum_num(13, 14))
输出:
rt_10_函数中参数的几种表现形式.py
# 函数中参数的几种表现形式
# 1、位置参数
# 2、关键字参数
# 3、缺省参数
# 4、可变长参数
#位置参数:按照参数定义的位置依次传入
def stu_info(name,age,address):
print(f"name:{name},age:{age},address:{address}")
stu_info("如花",18,"山东日照")
stu_info(18,"山东青岛","张三")
#关键字参数:进行输出:以形式参数赋值的形式传值
stu_info(age=19,address="山东青岛",name="似玉")
# 缺省参数:在定义函数时,给参数一个默认值
# 再使用时,缺省参数可以省略,省略时执行默认值
# 如果不省略,转入新的值,会覆盖默认值,执行新的值
# 函数中参数的几种表现形式
# 1,位置参数
# 2,关键字参数
# 3.缺省参数
# 4,可变长参数
def stu_info(name, age, address):
print(f"name:{name}, age:{age}, address:{address}")
# 位置参数:按照参数定义的位置依次传入
stu_info("如花", 18, "山东日照")
# stu_info(18, "山东青岛", "张三")
# 关键字参数:通过“键=值”形式加以指定。可以让函数更加清晰
# 同时也消除了参数的顺序需求,以形式参数赋值的形式传值
stu_info(age=18, address="山东青岛", name="如花")
# 缺省参数:在定义函数时,给参数一个默认值
# 再使用时,缺省参数可以省略,省略时执行默认值
# 如果不省略,转入新的值,会覆盖默认值,执行新的值
def sum_num(a, b, c=100):
result = a + b + c
print(f"{a} + {b} + {c} = {result}")
sum_num(11, 22)
sum_num(11, 22, 33)
def get_info(name, age, gender=True):
gender_text = "男生"
if not gender:
gender_text = "女生"
print(f"name:{name}, age:{age}, gender:{gender_text}")
get_info("小明",18)
get_info("小花", 18, gender=False)
# 可变长参数
# args:可变长参数, 表示元组类型
# kwargs:可变长参数, 表示字典类型
def test(num, *args, **kwargs):
'''
:param num:
:param args:
:param kwargs:
:return:
'''
print("num--->", num)
print("args--->", args, type(args))
print("kwargs--->", kwargs, type(kwargs))
test(100)
test(11, 22, 33, 44, 55)
test(11, 22, 33, name="如花", age=18)
tuple1 = (100, 200)
dict1 = {"11": 100, "22": 200}
# 拆包
test(111, *tuple1, **dict1)
输出:
rt_11_list列表.py
# 列表:list,可以存储多种不同数据类型的序列
# 定义:[],
# 特点:可变的数据类型(增删改查),有序的
num_list = [11, 22, 33, "如花", True, 3.14, 33]
list1 = list(range(10))
print(num_list, type(num_list))
print(list1, type(list1))
# 查看列表的长度
print(num_list.__len__(), len(num_list))
# 通过dir函数查看list中封装的对自己进行操作的函数
print(dir(num_list))
# 'append', 'clear', 'copy', 'count', 'extend',
# 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'
# 增删改查
# 查询
# 根据下标查元素
print(num_list[3])
print(num_list[-3])
# 根据元素查下标
print(num_list.index(33))
# 添加
# append:在末尾追加
num_list.append(111)
print(num_list)
# insert:在原有列表的index位置之前插入一个元素
num_list.insert(0, 99)
print(num_list)
# extend:合并
num_list.extend(list1)
print(num_list)
# 删除
num_list.remove(33)
print(num_list)
print(num_list.pop())
print(num_list)
# 修改,重新赋值就是修改
num_list[0] = 999
print(num_list)
# reverse:反转列表
num_list.reverse()
print(num_list)
# sort排序
# num_list.sort()
# 默认是从小到大排列
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)
输出: