第五周作业

本文详细介绍了Python编程的基础知识,包括条件语句、循环语句、函数定义与调用、变量作用域、递归函数、列表操作及常见函数的使用。通过实例讲解了if语句、for循环、while循环、函数参数传递、全局与局部变量、递归函数实现、列表创建与操作等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# if语句练习

age = 21
if age>18:#if和age之间必须要有一个空格,语句后面一定要有一个冒号
print(“已经是成年人了”)
print(“应该思考成年人的责任了”)
print(“必须思考生命的意义了”)
print(“尽早确立自己感兴趣的方面”)
已经是成年人了
应该思考成年人的责任了
必须思考生命的意义了
尽早确立自己感兴趣的方面

if语句练习

age = 17
if age>18:#if和age之间必须要有一个空格,语句后面一定要有一个冒号
print(“已经是成年人了”)
print(“应该思考成年人的责任了”)
print(“必须思考生命的意义了”)
print(“尽早确立自己感兴趣的方面”)
尽早确立自己感兴趣的方面

双向分支练习

gender = input(“请输入您的性别:”)
print(“您的性别是:{}”.format(gender))
if gender ==“nan”:
print(“要有男人应该有的责任感”)
print(“要有正确的合理的追求”)
else:
print(“做个知性优雅的人”)
print(“做一个自由而全面发展的人”)
请输入您的性别:nan
您的性别是:nan
要有男人应该有的责任感
要有正确的合理的追求
做一个自由而全面发展的人

学生成绩

score = input(“请输入你的成绩:”)
print(“你的成绩是:{}”.format(score))
score = int(score)#这是是我们输入的分数转化为字符串的一个函数
if score >=90:
print(“A”)#ABCD必须要做英文状态下的双引号下,这才表示是字符串
if score >=80 and score <90:
print(“B”)
if score >=70 and score <80:
print(“C”)
if score >=60 and score <70:
print(“D”)
if score<60:
print(“革命尚未成功,同志任需努力”)
请输入你的成绩:85
你的成绩是:85
B

多路分支

score = input(“请输入你的成绩:”)
print(“你的成绩是:{}”.format(score))
score = int(score)#这是是我们输入的分数转化为字符串的一个函数
if score >=90:
print(“A”)#ABCD必须要做英文状态下的双引号下,这才表示是字符串
elif score >=80:
print(“B”)
elif score >=70:
print(“C”)
elif score >=60:
print(“D”)
else:
print(“革命尚未成功,同志任需努力”)
请输入你的成绩:98
你的成绩是:98
A

循环语句for循环

打印学生列表姓名

for name in [“xixi”,“jingjing”,“huahua”]:#表示把列表里的姓名都打印出来
print(name)
xixi
jingjing
huahua

打印学生列表姓名

如果是jingjing打印好久不见啊

for name in [“xixi”,“jingjing”,“huahua”]:#表示把列表里的姓名都打印出来
print(name)
if name == “jingjing”:#注意这里不是一个等号,而是两个等号表示判断
print(“好久不见啊{}”.format(name))
else:
print(“同学你好”)
xixi
同学你好
jingjing
好久不见啊jingjing
huahua
同学你好

range函数联系

range表示可以生成一系列数字的函数

比如印1到10的数字

for i in range(1,11):#上限不在内
print(i)

1
2
3
4
5
6
7
8
9
10

for-else语句练习

打印学生列表姓名

如果是jingjing打印好久不见啊

for name in [“xixi”,“jingjing”,“huahua”]:#表示把列表里的姓名都打印出来
print(name)
if name == “jingjing”:#注意这里不是一个等号,而是两个等号表示判断
print(“好久不见啊{}”.format(name))
else:
print(“同学你好”)
else:
print(“同学我们不认识”)
xixi
同学你好
jingjing
好久不见啊jingjing
huahua
同学你好
同学我们不认识

for 循环之break

break表示无条件结束整个循环,简称循环猝死

比如从1-10中找到6就结束

for i in range(1,11):
if i ==7:#这是一个判断语句
print(“我找到了”)
break
else:
print(“i”)#注意如果这里的i有双引号和没有双引号的区别
for i in range(1,11):
if i ==7:#这是一个判断语句
print(“我找到了”)
break
else:
print(i)#注意如果这里的i有双引号和没有双引号的区别
i
i
i
i
i
i
我找到了
1
2
3
4
5
6
我找到了

for 循环之continue

continue表示无条件结束本次循环,进入下一轮循环

找到1-10中的偶数

for i in range(1,11):
if i%2 ==1:
continue
else:
print(i)

方式2

for i in range(1,11):
if i%2 ==0:

    print(i)

方式3

for i in range(1,11):
if i%2 ==1:
continue
print("{}是偶数".format(i))

2
4
6
8
10
2
4
6
8
10
2是偶数
4是偶数
6是偶数
8是偶数
10是偶数

for 循环之pass

pass一般用于占位

for i in range(1,11):
pass
print(“我只是占位”)
我只是占位
我只是占位
我只是占位
我只是占位
我只是占位
我只是占位
我只是占位
我只是占位
我只是占位
我只是占位
def func(name,age,addr):
print("{0}今年{1}岁,住在{2}".format(name,age,addr))
print(“温文尔雅,落落大方”)
n = “习习”
a = “20”
addr = “重庆”
func(n,a,addr)
习习今年20岁,住在重庆
温文尔雅,落落大方
#关键字函数
def func_key(name=“n”,age=“a”,addr=“addr”):
print("{0}今年{1}岁,住在{2}".format(name,age,addr))
print(“温文尔雅,落落大方”)
n = “习习”
a = “20”
addr = “重庆” print(type(args))
func_key(name=n,age=a,addr=addr)
习习今年20岁,住在重庆
温文尔雅,落落大方

收集参数代码

模拟一个学生做自我介绍,但具体内容不清楚

def stu(args):#参数args不是必须这么写,但是约定俗成,args相当于一个list,这里的是收集参数的一个标志
print(“小伙伴们,大家好,很高兴认识大家”)
print(type(args))#type是检验args的函数类型,这里不需要双引号
for item in args:
print(item)
stu(“习习”,20,“家住重庆”)
stu(“jingjing”)
小伙伴们,大家好,很高兴认识大家
<class ‘tuple’>
习习
20
家住重庆
小伙伴们,大家好,很高兴认识大家
<class ‘tuple’>
jingjing

收集参数案例

收集参数可以不带任何参数

stu()
小伙伴们,大家好,很高兴认识大家
<class ‘tuple’>

收集参数之关键字收集参数

模拟一个学生做自我介绍,但具体内容不清楚

def stu(kwargs):#参数kwargs不是必须这么写,但是约定俗成,这里的是关键字收集参数的一个标志
print(“小伙伴们,大家好,很高兴认识大家”)
print(type(kwargs))#type是检验args的函数类型,这里不需要双引号
for k,v in kwargs.items():#这里的.items是访问字典的格式
print(k,"—",v)#注意变量不能用双引号
stu(name=“习习”,age=20,add=“家住重庆”)
print("*"*20)#这个表示打印20遍星号
stu(name=“jingjing”)
小伙伴们,大家好,很高兴认识大家
<class ‘dict’>
name — 习习
age — 20
add — 家住重庆


小伙伴们,大家好,很高兴认识大家
<class ‘dict’>
name — jingjing

收集参数混合通用案例

def stu(name,age,args,hobby=“没有”,**kwargs):#要遵循普通参数,普通收集参数,默认参数,关键字收集参数的顺序
print(“小伙伴们,大家好,相逢就是一种缘分”)
print(“我叫{0},今年{1}岁了”.format(name,age))
if hobby ==“没有”:
print(“不好意思,我暂时还没有爱好”)
else:
print(“我的爱好是{0}”.format(hobby))
for item in args:
print(item)
print("
"*20)#注意这是和上面的for是同一个缩进
stu(“xixi”,20)


# 收集参数混合通用案例 def stu(name,age,*args,hobby="没有",**kwargs):#要遵循普通参数,普通收集参数,默认参数,关键字收集参数的顺序 print("小伙伴们,大家好,相逢就是一种缘分") print("我叫{0},今年{1}岁了".format(name,age)) if hobby =="没有": print("不好意思,我暂时还没有爱好") else: print("我的爱好是{0}".format(hobby)) for item in args: print(item) print("*"*20)#注意这是和上面的for是同一个缩进 stu("xixi",20)
# 收集参数混合通用案例def stu(name,age,*args,hobby="没有",**kwargs):#要遵循普通参数,普通收集参数,默认参数,关键字收集参数的顺序 print("小伙伴们,大家好,相逢就是一种缘分") print("我叫{0},今年{1}岁了".format(name,age)) if hobby =="没有": print("不好意思,我暂时还没有爱好") else: print("我的爱好是{0}".format(hobby)) for item in args: print(item) print("*"*20)#注意这是和上面的for是同一个缩进stu("xixi",20)小伙伴们,大家好,相逢就是一种缘分 我叫xixi,今年20岁了 不好意思,我暂时还没有爱好 ******************** # 收集参数混合通用案例 def stu(name,age,*args,hobby="没有",**kwargs): print("小伙伴们,大家好,相逢就是一种缘分") print("我叫{0},今年{1}岁了".format(name,age)) if hobby =="没有": print("不好意思,我暂时还没有爱好") else: print("我的爱好是{0}".format(hobby)) for item in args: print(item) print("*"*20) for k,v in kwargs.items():#这个字典后面一定要有括号 print(k,"- - -",v)

stu(“xixi”,20,“jingjing”,hobby=“画画”,hobby2=“烹饪”,hobby3=“健身”)
小伙伴们,大家好,相逢就是一种缘分
我叫xixi,今年20岁了
我的爱好是画画
jingjing


hobby2 - - - 烹饪
hobby3 - - - 健身

提升局部变量为整体变量需要使用global

def func():
global b1
b1 = 100
print()
print(“于平凡中做出不平凡之事”)
b2 = 99
print()
print(b1)
func()
100

于平凡中做出不平凡之事

eval() 函数,它的作用是把一个字符串当成代码执行

x = 100
y = 200
z1 = x + y
z2 = eval(“x + y”)
print(z1)
print(z2)
300
300

exec() 函数,它的作用是把一个字符串当成代码执行,但是不返回结果

x = 100
y = 200
z1 = x + y
z2 = exec(“x + y”)
print(z1)
print(z2)
300
None

exec() 函数,它的作用是把一个字符串当成代码执行,但是不返回结果

x = 100
y = 200
z1 = x + y
z2 = exec(“print(‘x + y:’,x + y)”)#注意字符串中引号的写法
print(z1)
print(z2)
x + y: 300
300
None

递归函数案例

斐波拉契数列,即f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)

def fib(n):
if n == 1:
return 1
if n == 2:
return 1
return fib(n-1) + fib(n-2)#注意这里是用的return函数,而不是类似于x = x-1 + x-2
print(fib(15))
fib(15)
610
Out[150]:610

1创建空列表

L1 = []
print(type(L1))# type是内置函数,负责打印出变量类型
print(L1)

2创建带值列表

L2 = [100]
print(type(L2))# type是内置函数,负责打印出变量类型
print(L2)

3 创建列表带多个值

L3 = [2,1,38,2]
print(type(L3))# type是内置函数,负责打印出变量类型
print(L3)

4使用list()

L4 = list()
print(type(L4))# type是内置函数,负责打印出变量类型
print(L4)
<class ‘list’>
[]
<class ‘list’>
[100]
<class ‘list’>
[2, 1, 38, 2]
<class ‘list’>
[]

列表常用操作

  • 访问
    • 使用下标操作(索引)
    • 列表的位置从0开始
  • 分片操作
    • 对列表进行任意一段的截取
    • L[:]

下标访问列表

L = [2,3,5,2,8,8]
print(L[2])#注意这里面的是大括号
print(L[4])
5
8

分片截取

print(L[1:4])#注意这里还是上限不在内原则

注意下标值可以为空,左边下标值默认为零,右边下标值默认为最大值加一,即取到最后一个值

print(L[2:])
[3, 5, 2]
[5, 2, 8, 8]

分片可以控制增长幅度,默认增长幅度为1

print(L[1:5:1])# 第二个冒号后面的数字表示增长幅度
print(L[1:5:2])

下标值可以超出范围,超出后不在考虑多余下标内容

print(L[3:12])
[3, 5, 2, 8]
[3, 2]
[2, 8, 8]

分片之负数下标

print(L)
print(L[-2:-4])#结果为空,因为分片总是默认从左往右截取
print(L[-4:-2])# 数组最后一个数的下标是-1
print(L[-2:-4:-1])# 如果分片值一定是左边比右边大则步长参数就需要使用负数


# 分片之负数下标 print(L) print(L[-2:-4])#结果为空,因为分片总是默认从左往右截取 print(L[-4:-2])# 数组最后一个数的下标是-1 print(L[-2:-4:-1])# 如果分片值一定是左边比右边大则步长参数就需要使用负数
# 分片之负数下标print(L)print(L[-2:-4])#结果为空,因为分片总是默认从左往右截取print(L[-4:-2])# 数组最后一个数的下标是-1print(L[-2:-4:-1])# 如果分片值一定是左边比右边大则步长参数就需要使用负数[2, 3, 5, 2, 8, 8] [] [5, 2] [8, 2] # 汉罗塔 def hano(n,a,b,c): """ n 代表几个塔 a 代表第一个塔,开始的塔 b 代表第二个塔,中间过渡的塔 c 代表第三个塔,目标塔 """ if n == 1: print(a,"-->",c) return None if n == 2: print(a,"-->",b) print(a,"-->",c) print(b,"-->",c) return None hano(n-1,a,c,b)#把n-1个盘子借助c塔,挪到b盘上去 print(a,"-->",c)# 把n-1个盘子从b塔,借助a塔,挪到c塔 hano(n-1,b,a,c)

a = “A”
b = “B”
c = “C”
n = 1
hano(n,a,b,c)
A --> C
n = 2
hano(n,a,b,c)
A --> B
A --> C
B --> C
n = 3
hano(n,a,b,c)
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C

list(列表)

del删除

a = [1,5,2,5,4,3]
print(id(a))
del a[2]
print(a)
print(id(a))
2604443711368
[1, 5, 5, 4, 3]
2604443711368

使用加号连接两个列表

a = [1,5,2,5,4,3]
b = [2,5,2,3,5]
c=[“s”,“f”]
d = a + b + c
print(d)
[1, 5, 2, 5, 4, 3, 2, 5, 2, 3, 5, ‘s’, ‘f’]

使用乘号操作列表

列表直接跟一个整数相乘,相当于把n个列表连接起来

a = [1,5,2,5,4,3]
b = a * 2
print(b)
[1, 5, 2, 5, 4, 3, 1, 5, 2, 5, 4, 3]

成员资格运算符

就是判断一个元素是否在list里面

a = [1,5,2,5,4,3]
b = 10
print(b in a)
b = 1
print(b in a)
False
True

链表的遍历

for in list

a = [1,5,2,5,4,3]
for i in a:
print(i)
1
5
2
5
4
3

双层列表循环

a 为嵌套列表或者双层列表

a = [[“one”,1],[“two”,2],[“three”,3]]
for k,v in a:
print(k,"- - -",v)
a = [[“one”,1,“o”],[“two”,2,“t”],[“three”,3,“h”]]
for k,v,w in a:
print(k,"- - -",v,"- - -",w)
one - - - 1
two - - - 2
three - - - 3
one - - - 1 - - - o
two - - - 2 - - - t
three - - - 3 - - - h

列表内涵:list content,通过简单方法创建列表

for 创建

s = [“a”,“b”,“c”]

用list s 创建一个list t

t = [i for i in s]#这个就是把s中的每一个元素放到新列表t中
print(t)
[‘a’, ‘b’, ‘c’]

过滤list中一部分内容形成新的列表

a = [i for i in range(1,15)]
b = [m for m in a if m % 2==0]#把list中的偶数取出来
print(b)
[2, 4, 6, 8, 10, 12, 14]

列表生成可以是嵌套,等价于两个for循环

列表生成可以嵌套

由两个列表a,

a = [i for i in range(1,4)]
print(a)
b = [j for j in range(100,400) if j % 100 == 0 ]
print(b)
c = [m + n for m in a for n in b]
print©

下面代码与上面代码等价

for m in a:
for n in b:
print(m + n,end=" ")
[1, 2, 3]
[100, 200, 300]
[101, 201, 301, 102, 202, 302, 103, 203, 303]
101 201 301 102 202 302 103 203 303

嵌套列表也可以使用条件表达式

d = [m + n for m in a for n in b if m + n < 250]
print(d)
[101, 201, 102, 202, 103, 203]

关于列表的常用函数

len求列表长度

a = [x for x in range(1,100)]
print(len(a))

max 求列表中的最大值

min 求列表中的最小值

print(max(a))

将其他格式的数据转换成list

a = [1,2,3,5]
print(list(a))
b = “我爱王晓静”
print(list(b))
c = “i love wangxiaojing”
print(list©)

把range产生的内容转换成list

x = range(12,19)
print(list(x))
99
99
[1, 2, 3, 5]
[‘我’, ‘爱’, ‘王’, ‘晓’, ‘静’]
[‘i’, ’ ', ‘l’, ‘o’, ‘v’, ‘e’, ’ ', ‘w’, ‘a’, ‘n’, ‘g’, ‘x’, ‘i’, ‘a’, ‘o’, ‘j’, ‘i’, ‘n’, ‘g’]
[12, 13, 14, 15, 16, 17, 18]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值