record-05 函数
练习:点球大战游戏(基于之前做的猜数字游戏思路)
足球比赛经过90分钟的赛事后,如果比分相同,则双方各派5名队员进行点球大战
5轮点球大战双方交替进行,即在1轮比赛中双方各射门一次、守门一次,5轮比赛 结束后对比双方得分确定获胜方
如果5轮比赛后比分相同,则进行第6轮比赛,如果第6轮比分还相同,那么进入下一轮
在5轮比赛过程中,如果能提前确定获胜方,则提前结束比赛
# 实现一个点球游戏 from random import randint user_score = 0 com_score = 0 # 两只队伍各派5名队员参与点球 # 点球共分5轮 # 每一轮,双方各射门一次,守门一次 for i in range(1, 6): print("当前是第%d轮比赛" % i) # 用户先射门,程序守门 # 程序先提示用户可以射门了,并且要求用户选择一个射门方向 print("请选择射门方向:") # 用户选择射门方向 # 程序通过接收,明确用户选择的方向是什么 user = int(input()) # 程序选择一个守门方向 com = randint(0, 1) # 判断方向是否一致 # 如果方向一致,代表球没进,用户不得分 # 如果方向不一致,代表球进了,用户得分+1 if user == com: print("球没进") user_score = user_score + 0 else: print("球进了") user_score = user_score + 1 print("当前双方比分用户:程序 %d:%d" % (user_score, com_score)) # 程序后射门,用户守门 # 程序先提示用户可以守门了,并且要求用户选择一个守门方向 print("请选择守门方向:") # 用户选择守门方向 # 程序通过接收,明确用户选择的方向是什么 user = int(input()) # 程序选择一个射门方向 com = randint(0, 1) # 判断方向是否一致 # 如果方向一致,代表球没进,程序不得分 # 如果方向不一致,代表球进了,程序得分+1 if user == com: print("球没进") com_score = com_score + 0 else: print("球进了") com_score = com_score + 1 print("当前双方比分用户:程序 %d:%d" % (user_score, com_score)) # 实现一个点球游戏
如果5轮比赛后比分相同,则进行第6轮比赛,如果第6轮比分还相同,那么进入下一轮
from random import randint
user_score = 0
com_score = 0
# 两只队伍各派5名队员参与点球
# 点球共分5轮
# 每一轮,双方各射门一次,守门一次
for i in range(1, 6):
print("当前是第%d轮比赛" % i)
# 用户先射门,程序守门
# 程序先提示用户可以射门了,并且要求用户选择一个射门方向
print("请选择射门方向:")
# 用户选择射门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个守门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,用户不得分
# 如果方向不一致,代表球进了,用户得分+1
if user == com:
print("球没进")
user_score = user_score + 0
else:
print("球进了")
user_score = user_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
# 程序后射门,用户守门
# 程序先提示用户可以守门了,并且要求用户选择一个守门方向
print("请选择守门方向:")
# 用户选择守门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个射门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,程序不得分
# 如果方向不一致,代表球进了,程序得分+1
if user == com:
print("球没进")
com_score = com_score + 0
else:
print("球进了")
com_score = com_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
# 当5轮比赛后,双方比分相同,进行后续比赛
times = 6
while user_score == com_score:
print("当前是第%d轮比赛" % times)
# 用户先射门,程序守门
# 程序先提示用户可以射门了,并且要求用户选择一个射门方向
print("请选择射门方向:")
# 用户选择射门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个守门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,用户不得分
# 如果方向不一致,代表球进了,用户得分+1
if user == com:
print("球没进")
user_score = user_score + 0
else:
print("球进了")
user_score = user_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
# 程序后射门,用户守门
# 程序先提示用户可以守门了,并且要求用户选择一个守门方向
print("请选择守门方向:")
# 用户选择守门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个射门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,程序不得分
# 如果方向不一致,代表球进了,程序得分+1
if user == com:
print("球没进")
com_score = com_score + 0
else:
print("球进了")
com_score = com_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
times = times + 1
# 实现一个点球游戏
在5轮比赛过程中,如果能提前确定获胜方,则提前结束比赛
from random import randint
user_score = 0
com_score = 0
# 两只队伍各派5名队员参与点球
# 点球共分5轮
# 每一轮,双方各射门一次,守门一次
for i in range(1, 6):
print("当前是第%d轮比赛" % i)
# 用户先射门,程序守门
# 程序先提示用户可以射门了,并且要求用户选择一个射门方向
print("请选择射门方向:")
# 用户选择射门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个守门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,用户不得分
# 如果方向不一致,代表球进了,用户得分+1
if user == com:
print("球没进")
user_score = user_score + 0
else:
print("球进了")
user_score = user_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
# 判断是否能提前结束比赛
# 3:0 4:1 4:2
# 领先方领先的分数比落后方还能获取的最大分数大,可以确定提前结束比赛
if user_score > com_score:
if user_score - com_score > 5 - i + 1:
break
else:
if com_score - user_score > 5 - i:
break
# 程序后射门,用户守门
# 程序先提示用户可以守门了,并且要求用户选择一个守门方向
print("请选择守门方向:")
# 用户选择守门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个射门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,程序不得分
# 如果方向不一致,代表球进了,程序得分+1
if user == com:
print("球没进")
com_score = com_score + 0
else:
print("球进了")
com_score = com_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
# 判断是否能提前结束比赛
if user_score > com_score:
if user_score - com_score > 5 - i and 5 - i != 0:
break
else:
if com_score - user_score > 5 - i and 5 - i != 0:
break
# 当5轮比赛后,双方比分相同,进行后续比赛
times = 6
while user_score == com_score:
print("当前是第%d轮比赛" % times)
# 用户先射门,程序守门
# 程序先提示用户可以射门了,并且要求用户选择一个射门方向
print("请选择射门方向:")
# 用户选择射门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个守门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,用户不得分
# 如果方向不一致,代表球进了,用户得分+1
if user == com:
print("球没进")
user_score = user_score + 0
else:
print("球进了")
user_score = user_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
# 程序后射门,用户守门
# 程序先提示用户可以守门了,并且要求用户选择一个守门方向
print("请选择守门方向:")
# 用户选择守门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个射门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,程序不得分
# 如果方向不一致,代表球进了,程序得分+1
if user == com:
print("球没进")
com_score = com_score + 0
else:
print("球进了")
com_score = com_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
times = times + 1
if user_score > com_score:
print("恭喜,用户获胜")
else:
print("很遗憾,程序获胜")
# 实现一个点球游戏
from random import randint
def u_shemen(): #
global user_score, com_score
# 用户先射门,程序守门
# 程序先提示用户可以射门了,并且要求用户选择一个射门方向
print("请选择射门方向:")
# 用户选择射门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个守门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,用户不得分
# 如果方向不一致,代表球进了,用户得分+1
if user == com:
print("球没进")
user_score = user_score + 0
else:
print("球进了")
user_score = user_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
def c_shemen(): #函数重用性
global user_score, com_score
user_score = 0
com_score = 0
# 程序后射门,用户守门
# 程序先提示用户可以守门了,并且要求用户选择一个守门方向
print("请选择守门方向:")
# 用户选择守门方向
# 程序通过接收,明确用户选择的方向是什么
user = int(input())
# 程序选择一个射门方向
com = randint(0, 1)
# 判断方向是否一致
# 如果方向一致,代表球没进,程序不得分
# 如果方向不一致,代表球进了,程序得分+1
if user == com:
print("球没进")
com_score = com_score + 0
else:
print("球进了")
com_score = com_score + 1
print("当前双方比分用户:程序 %d:%d" % (user_score, com_score))
user_score = 0
com_score = 0
# 两只队伍各派5名队员参与点球
# 点球共分5轮
# 每一轮,双方各射门一次,守门一次
for i in range(1, 6):
print("当前是第%d轮比赛" % i)
u_shemen()
# 判断是否能提前结束比赛
# 3:0 4:1 4:2
# 领先方领先的分数比落后方还能获取的最大分数大,可以确定提前结束比赛
if user_score > com_score:
if user_score - com_score > 5 - i + 1:
break
else:
if com_score - user_score > 5 - i:
break
c_shemen()
# 判断是否能提前结束比赛
if user_score > com_score:
if user_score - com_score > 5 - i and 5 - i != 0:
break
else:
if com_score - user_score > 5 - i and 5 - i != 0:
break
# 当5轮比赛后,双方比分相同,进行后续比赛
times = 6
while user_score == com_score:
print("当前是第%d轮比赛" % times)
u_shemen()
c_shemen()
times = times + 1
if user_score > com_score:
print("恭喜,用户获胜")
else:
print("很遗憾,程序获胜")
# 某个公司传输数据,数据是四位的整数,在传递过程中是加密的
# 加密规则如下:每位数字都加上5,然后再用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
# 设计解密函数,能够根据接收的数据判断出原始数据
def jiemi(new):
# 解密
# 1、接收准备解密的数据
# 2、将加密后的数据其中的一、二、三、四位找出来
a = new // 1000
b = new % 1000 // 100
c = new % 100 // 10
d = new % 10
# 3、将第一位和第四位交换,第二位和第三位交换
a, d = d, a
b, c = c, b
# 4、原数据为2,加密后位7 原数据为8,加密后位3
# 5、规律:如果加密后的数据大于5,将其-5即为原数据
# 6、规律:如果加密后的数据小于5,将其+5即为原数据
if a >= 5:
a = a - 5
else:
a = a + 5
if b >= 5:
b = b - 5
else:
b = b + 5
if c >= 5:
c = c - 5
else:
c = c + 5
if d >= 5:
d = d - 5
else:
d = d + 5
# 7、将每一位的原数据组成4位整数
result = a * 1000 + b * 100 + c * 10 + d
return result
# 原5555 密0000
# 原0000 密5555
# 原0987 密2345
x = jiemi(2345)
print(x)
#函数的作用:增强代码重用性、提高代码设计效率和执行效率、降低代码维护成本
#使用函数的思路
#确定函数要完成什么样的工作,并根据要完成的工作明确函数体中应该包含哪些命令
#根据函数体代码的执行,来确定是否需要有参数列表
#根据函数的调用,来确定是否需要有返回值
#函数定义 def关键字
#函数名称,命名规则同变量名,并且同一个源代码文件中,函数名不能相同
#函数在定义时,可能会有参数列表,参数列表中每一个都叫形参
#形参并不代表某一个数据,而是表示函数需要从函数外接收一个数据
#并且形参在接收这个数据后,也会将数据临时存储起来
x=1 #全局变量
y=2 #全局变量
z=3 #全局变量
def f():
global x
x=100 #修改全局变量的值
y=200 #定义局部变量
z=300 #定义局部变量
print(x,y,z) #输出全局变量x,局部变量y和z的值
#函数调用
#只有通过函数调用,才能让函数体中的命令生效
#函数调用时,及时不需要接收参数,括号也不能省略
f()
print(x,y,z) #输出全局变量x,y和z的值
#全局变量、局部变量
#根据变量的使用范围来确定应该用全局变量,还是局部变量
#如果一个变量,只需要在函数体中使用,在函数体外不会用到,那么它就应该被定义为局部变量
#如果一个变量,即在函数体中使用,又在函数体外使用,那么它就应该被定义为全局变量
#如果全局变量,在函数体中想要重新赋值,一定要在函数体中使用global
#默认值参数 在函数定义时使用
#没有使用默认值参数时,函数有几个形参,就需要在调用时,传递几个实参
#默认值参数只能出现在参数列表的后面
def f2(x,y=0,z=1):
print(x+2*y+3*z)
f2(1)
f2(1,2)
f2(1,2,3)
#关键参数 在函数调用时使用
#没有使用关键参数,函数的实参默认是按照顺序传递给形参
f2(1,2,3)
f2(3,2,1)
#按照关键字传递实参
f2(x=1,y=2,z=3)
f2(z=3,x=1,y=2)
f2(1,z=3,y=2)
print("hello",sep=' ',end='\n')
#return 返回值
#退出函数的执行
#从函数中返回值,返回到程序中函数被调用的位置
#当函数体中没有明确使用return时,默认返回None值
def f3(x,y):
return 10*x+20*y

浙公网安备 33010602011771号