# 函数基础:
# 写函数,计算传入数字参数的和。(动态传参)
# def sum(x,y):
# return x+y
#或者
# c = lambda x,y:x+y
# print(c(2,3))
# 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
#修改文件中首字母大写
# def file_daxie(file):
# a = []
# for i in file:
# b = i.capitalize()
# a.append(b)
# print(a)
# file_daxie(open('b.text',mode='r+',encoding='utf-8'))
# 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
# def empty(x):
# n = 0
# for i in x:
# if i == '':
# n+=1
# print('有%s个空元素'%n)
# empty(('walter','lizzy',''))
# empty(' ')
# empty(['walter','',''])
# 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# def dic_len(d):
# for k,v in d.items():
# if len(v)>2:
# d[k] = v[0:2]
# return d
# dic = {'k1':'v1v1','k2':[11,22,33,44]}
# print(dic_len(dic))
# PS:字典中的value只能是字符串或列表
# 函数进阶:
# 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
# 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃A’)]
# def cards():
# num = []
# for i in range(2,11):
# num.append(i)
# num.extend(['J','Q','K','A'])
# type = ['红心','方块','草花','黑桃']
# result = []
# for i in num:
# for j in type: #注意这个循环执行完了,才会执行上一个循环
# result.append((j,i))
# return result
# print(cards())
# 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
# 例如:min_max(2,5,7,8,4)
# 返回:{‘max’:8,’min’:2}
# def min_max(*args): #当函数需要传入多个值,同时是元组形式,可以用*args,字典形式用*kwargs
# dic = {}
# dic['max'] = max(args)
# dic['min'] = min(args)
# return dic
# print(min_max(23,45,656,245,754,647))
# 写函数,专门计算图形的面积
# 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
# 调用函数area(‘圆形’,圆半径) 返回圆的面积
# 调用函数area(‘正方形’,边长) 返回正方形的面积
# 调用函数area(‘长方形’,长,宽) 返回长方形的面积
# def area(name,*args):
# def Rectangle(x,y):
# print('长方形的面积为:',x*y)
# def Square(x):
# print('正方形的面积为:',x*x)
# def garden(r):
# pi = 3.14159265
# print('圆形的面积为:',pi*r*r)
# if name == '长方形':
# Rectangle(*args) #在判断语句中,可以直接调用嵌套函数
# elif name == '正方形':
# Square(*args)
# elif name == '圆形':
# garden(*args)
# area('圆形',4)
# area('长方形',4,6)
# area('正方形',4)
# 写函数,传入一个参数n,返回n的阶乘
# 例如:cal(7)
# 计算7*6*5*4*3*2*1
# def cal(n):
# res = 1
# for i in range(n,0,-1):#range还可以从大到小
# res = i*res
# print(i)
# return res
# print(cal(7))
# 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
# judge={'is_authenticated':False}
# def login(func):
# def inner(*args, **kwargs):
# with open('account.txt', 'r+', encoding='utf-8') as f:
# account = f.read()
# account = eval(account)
# if judge['is_authenticated'] == False:
# username = input('请输入你的用户名:').strip()
# password = input('请输入你的密码:').strip()
# if username in account['username'] and password in account['password']:
# print('Welcome login....')
# judge['is_authenticated'] = True
# func()
# else:
# print('wrong username or password')
# else:
# print('用户已登入,验证通过...')
# func()
# return inner
# @login
# def name():
# print('hello')
# @login
# def home():
# print('-----首页-----')
# @login
# def hotel():
# print('-----宾馆-----')
# @login
# def plance():
# print('-----机票-----')
# name()
# home()
# hotel()
# plance()
# 内置函数
# 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
# name=['alex','wupeiqi','yuanhao','nezha']
# res = list(map(lambda x:x+'_sb',name))#字符串加值,可以通过加号直接添加更改
# print(res)
# 用filter函数处理数字列表,将列表中所有的偶数筛选出来
# num = [1,3,5,6,7,8]
# res = list(filter(lambda x:x%2==0,num))
# print(res)
# 如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
# portfolio = [
# {'name': 'IBM', 'shares': 100, 'price': 91.1},
# {'name': 'AAPL', 'shares': 50, 'price': 543.22},
# {'name': 'FB', 'shares': 200, 'price': 21.09},
# {'name': 'HPQ', 'shares': 35, 'price': 31.75},
# {'name': 'YHOO', 'shares': 45, 'price': 16.35},
# {'name': 'ACME', 'shares': 75, 'price': 115.65}
# ]
# 用filter过滤出,单价大于100的股票有哪些
# f = filter(lambda d: d['price'] >= 100, portfolio) #lambda是将列表每个元素进行依次调用
# print(list(f))
# 写一个计算每个程序执行时间的装饰器;
# import time
# def timer(func):
# def inner(*args,**kwargs):
# start_time = time.time()
# func()
# stop_time = time.time()
# print(stop_time-start_time)
# return inner
#
# @timer
# def sayhi():
# print('hello world')
#
# sayhi()
# 题目:写一个摇骰子游戏,要求用户压大小,赔率一赔一。
# 要求:三个骰子,摇大小,每次打印摇骰子数。
you_money = 1000
def dice(n):
global you_money #先声明引用全局变量
if you_money > 0:
you_bets = int(input('你的下注金额:').strip())
import random
x = random.randint(1,6)
y = random.randint(1,6)
z = random.randint(1,6)
print(x,y,z)
if x+y+z <= 10:
if n == '大':
print('你输了')
you_money = you_money - you_bets
print('很遗憾 你输了%s元 你的当前金额为%s 请再接再厉哦' % (you_bets, you_money ))
elif n == '小':
print('你赢了')
you_money = you_money + you_bets
print('恭喜你 赢了%s元 你的当前金额为%s' % (you_bets, you_money ))
elif x+y+z >=11:
if n == '大':
print('你赢了')
you_money = you_money + you_bets
print('恭喜你 赢了%s元 你的当前金额为%s' % (you_bets, you_money))
elif n == '小':
print('你输了')
you_money = you_money - you_bets
print('很遗憾 你输了%s元 你的当前金额为%s 请再接再厉哦' % (you_bets, you_money))
else:
print('金额不足,请那女朋友来换,哈哈')
while True:
dice(input('请输入你的猜测大或者小:').strip())
f = input('退出请按b继续请按c:').strip()
if f == 'b' or f == 'B':
break
if f == 'c'or f == 'C':
continue
# you_money = 1000
# def dice():
# you_money = 1000
# while you_money > 0:
# n = input('请输入你的猜测大或者小:').strip()
# you_bets = int(input('你的下注金额:').strip())
# import random
# x = random.randint(1, 6)
# y = random.randint(1, 6)
# z = random.randint(1, 6)
# print(x, y, z)
# if x + y + z <= 10:
# if n == '大':
# print('你输了')
# you_money = you_money - you_bets
# print('很遗憾 你输了%s元 你的当前金额为%s 请再接再厉哦' % (you_bets, you_money))
# elif n == '小':
# print('你赢了')
# you_money = you_money + you_bets
# print('恭喜你 赢了%s元 你的当前金额为%s' % (you_bets, you_money))
# elif x + y + z >= 11:
# if n == '大':
# print('你赢了')
# you_money = you_money + you_bets
# print('恭喜你 赢了%s元 你的当前金额为%s' % (you_bets, you_money))
# elif n == '小':
# print('你输了')
# you_money = you_money - you_bets
# print('很遗憾 你输了%s元 你的当前金额为%s 请再接再厉哦' % (you_bets, you_money))
# f = input('退出请按b继续请按c:').strip()
# if f == 'b' or f == 'B':
# break
# elif f == 'c' or f == 'C':
# continue
# else:
# print('金额不足,请那女朋友来换,哈哈')
#
# dice()