您现在的位置是:主页 > news > 焦作会做网站制作的有哪家/磁力猫引擎

焦作会做网站制作的有哪家/磁力猫引擎

admin2025/4/28 20:09:35news

简介焦作会做网站制作的有哪家,磁力猫引擎,网页版微信登陆入口,荥阳郑州网站建设目录 Python中函数(function)的用法 参数:形参和实参 形参 变量:局部变量和全局变量 局部变量 全局变量 生成式 高阶函数 map函数 reduce函数 filter过滤函数 sorted函数 匿名函数 练习 Python中函数(function)的用法 函数代码块以 def 关键词开头&…

焦作会做网站制作的有哪家,磁力猫引擎,网页版微信登陆入口,荥阳郑州网站建设目录 Python中函数(function)的用法 参数:形参和实参 形参 变量:局部变量和全局变量 局部变量 全局变量 生成式 高阶函数 map函数 reduce函数 filter过滤函数 sorted函数 匿名函数 练习 Python中函数(function)的用法 函数代码块以 def 关键词开头&…

目录

Python中函数(function)的用法

参数:形参和实参

形参

变量:局部变量和全局变量

局部变量

全局变量

生成式

高阶函数

map函数

reduce函数 

filter过滤函数

sorted函数

匿名函数

练习


Python中函数(function)的用法

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
  • 函数内容以冒号起始,并且缩进
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

参数:形参和实参

形参

位置参数

def getInfo(name,age):print(name,age)
getInfo('westos',11)
getInfo(11,'wesots')  # 打印出结果为name=11,age="westos",不符合常理,因此顺序不能颠倒
getInfo(age=11,name='westos')  # 也可以直接对参数name和age直接传值

默认参数

def mypow(x,y=2):   # y=2即为默认参数,有默认参数时,形参和实参数目可以不一致print(x**y)     # 打印x的y次方
mypow(4)            # 没有传值使用默认的2
mypow(2,3)          # 传值则使用所传递的数值来运算

可变参数

def mysum(*a):        # 加*号表示传多个参数,不加则默认为一个sum = 0for item in a:sum += itemprint(sum)
mysum(1,2,3,4,5)

关键字参数

def getInfo(name,age,**kwargs)    # **kw[keywords]关键字参数print(name,age)print(kwargs)
getInfo('westos',18,gender='female',hobbies=['coding','running'])

变量:局部变量和全局变量

局部变量

在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会失效,在函数外访问不到

全局变量

在整个程序中函数内外都可以访问到

a = 1
print('outside:',id(a))
def fun():a = 5print('inside:',id(a))fun()
print(a)
print(id(a))

a = 1
print('outside:',id(a))
def fun():global a      # 声明为全局变量a = 5print('inside:',id(a))fun()
print(a)
print(id(a))

生成式

示例1: 

假设有20个学生,学生名为westosX,学生分数在60~100之间,筛选出成绩在90分以上得学生

import random
stuInfo = {}                   # 创建一个空字典
for i in range(20):name = 'westos' + str(i)score = random.randint(60,100)stuInfo[name] = score                    # 通过key值找到value值
# 方式一:
# highScore = {}
# for name,score in stuInfo.items():
#     if score > 90:
#         highScore[name] = score              # 如果score大于90,将其放入highScore字典中
# print(highScore)
# 方式二:
# name:score为需要获取的值,for name,score in stuInfo.items() if score > 90表示获取到的值需要满足的条件
print({name:score for name,score in stuInfo.items() if score > 90})

示例2:

把所有的key值都变为大写

d = dict(a=1,b=2)           # 工厂函数
# 方案一:
# print(d)
# new_d = {}
# for i in d:
#     new_d[i.upper()] = d[i]
# print(new_d)
# 方案二:
print({k.upper():v for k,v in d.items()})

示例3:

大小写key值合并,统一以小写输出

d = dict(a=2, b=1, c=2, B=9, A=10)
# # 输出{'a':12, 'b':10, 'c':2}
# # new_d = {}
# # for k,v in d.items():
# #     low_k = k.lower()
# #     if low_k not in new_d:
# #         new_d[low_k] = v
# #     else:
# #         new_d[low_k] += v
# # print(new_d)
print({k.lower():d.get(k.lower(),0) + d.get(k.upper(),0) for k in d})

高阶函数

map函数

map()函数接收两个参数,一个是函数,一个是序列。map将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回

练习:10个数在[2,7]中取随机数求阶乘

import random
def f(x):        # 定义阶乘函数res = 1for i in range(1,x+1):res *= ireturn res
# 定义列表生成式
li = [random.randint(2,7) for i in range(10)]    # 在2~7之间产生10个随机数
print(li)
print(list(map(f,li)))

reduce函数 

reduce:把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

reduce(f,[x1,x2,x3,x4,x5]) = f(f(f(x1,x2),x3),x4)

python2中为内置函数;

python3通过:from functools import reduce 将其导入 

# 相当于做累乘、累加操作
from functools import reduce
def multi(x,y):return x * yprint(reduce(multi,range(1,4)))def add(x,y):return x + y
print(reduce(add,[1,2,3,4,5]))

filter过滤函数

和map()类似,也接收一个函数和一个序列。但是和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

# 判断(0,100)中的偶数
def isOdd(num):if num % 2 == 0:return Trueelse:return False
print(list(filter(isOdd,range(100))))# 判断1~100中的质数
def isPrime(num):for i in range(2,num):if num % i == 0:return Falseelse:return True
print(list(filter(isPrime,range(1,100))))

sorted函数

# li = [2,3,1,4]
# li.sort()           # 顺序排序
# print(li)# li.sort(reverse=True) # 逆序排序
# print(li)# print(sorted(li))                   # 顺序排序
# print(sorted(li,reverse=True))      # 逆序排序

练习:

info = {# 商品名称    商品数量    商品价格('apple1',200,32),('apple4',40,12),('apple3',40,2),('apple2',1000,23),('apple5',40,5)
}
print(sorted(info))        # 按照商品名称排序def sort_by_num(num):      # 按照商品数量排序return num[1]
print(sorted(info,key=sort_by_num))def sort_by_price(x):      # 按照商品价格排序return x[2]
print(sorted(info,key=sort_by_price))def sort_by_count_price(y):    # 先按商品数量排序,数量相同时,按照价格排序return y[1],y[2]
print(sorted(info,key=sort_by_count_price))

匿名函数

匿名函数关键字是lambda,冒号前面是形参,冒号后面是返回值

from functools import reduce
# def fun(*args,**kwargs):
#     return args,kwargs
# print(fun([1,2,3,4,5]))# print(lambda *args,**kwargs:(args,kwargs))# def add(x,y):
#     return x+y
# print(reduce(lambda x,y:x+y,[1,2,3,4,5]))# def mypow(x):
#     return x ** 2
# print(map(lambda x:x ** 2,range(5)))
print(list(filter(lambda x:x%2==0,range(100))))####练习:移动数组中的0
nums = [0, 7, 0, 1, 2, 1, 5,1,  7, 8, 0, 67, 1, 3, 4]print(sorted(nums,key=lambda x:1 if x == 0 else 0))

练习

示例1: 

编写一个函数cacluate,可以接收任意多个数,返回的是一个元组,元组的第一个值为所有参数的平均值,第二个值是大于平均值的所有数

def cacluate(*args):avg = sum(args) / len(args)more_avg = []for item in args:if item > avg:more_avg.append(item)return avg,more_avg
a = cacluate(1,2,3,4,5,6,7,8)
print(a)

示例2:

编写一个函数,接收字符串参数,返回一个元组,'ehllo WROLD',元组的第一个值为大写字母的个数,第二个值为小写字母个数

def letterNum(x):upper_letter_count = 0lower_letter_count = 0for i in x:if i.isupper():     # 如果该条件为真upper_letter_count += 1elif i.islower():lower_letter_count += 1else:continuereturn upper_letter_count,lower_letter_count
a = letterNum('ehllo WROLD')
print(a)

示例3:

编写函数,接收一个列表(包含29个1~100之间的随机整型数)和一个整型数k,返回一个新列表.
函数需求:
    - 将列表下标k之前对应(不包含k)的元素逆序;
    - 将下标k及以后的元素逆序;
[0,2,3,4,5]  2   [2,0,5,4,3]

def fun(li,k):print(li)if k < 0 or k > len(li):        # 首先先判断k是否存在return 'error k'return li[:k][::-1] + li[k:][::-1]
print(fun([0,2,3,4,5],2))

示例4:

模拟轮盘抽奖游戏
轮盘分为三部分:一等奖,二等奖和三等奖;
轮盘转的时候是随机的,
            如果范围在[0,0.08)之间,代表一等奖
            如果范围在[0.08,0.3)之间,代表二等奖
            如果范围在[0.3,1.0)之间,代表三等奖
模拟此次活动1000人参加,模拟游戏时需要准备各等级奖品的个数

import random
# 创建一个字典保存对应关系
rewardDict = {'一等奖' : (0,0.08),'二等奖' : (0.08,0.3),'三等奖' : (0.3,1)
}
def lottery():                       # 判断用户在哪个得奖区间num = random.random()for k,v in rewardDict.items():if v[0] <= num < v[1]:return k
resultDict = {}
for i in range(1000):                # 统计得奖人数res  = lottery()if res not in resultDict:        # 第一次出现,就只有1resultDict[res] = 1else:resultDict[res] += 1         # 不是第一次出现,直接+1
for k,v in resultDict.items():print(k,'--->',v)

示例5: 

腾讯笔试编程题
题目需求:
    对于一个十进制的正整数,定义f(n)为其各位数字的平方和,如:
    f(13) = 1**2 + 3**2 = 10
    f(207) = 2**2 + 0**2 + 7**2 = 53
    下面给出三个正整数k,a,b,你需要计算有多少个正整数n满足 a <= n <= b,且k*f(n)=n
输入:
    第一行包含3个正整数k,a,b, k>=1, a,b<=10**18, a<=b
输出:
    输出相应的答案
范例:
    输入: 51   5000  10000
    输出: 3

def f(n):            # 定义f(n)为其各位数字的平方和n = str(n)       # 转换为字符串sum = 0for item in n:   # 要求和,这里就需要创建一个累加器sum += int(item) ** 2   # 先将item转换为int型再进行平方操作return sum
# print(f(13))
s = input()
li = []
for item in s.split():li.append(int(item))          # 保存三个整型数
k,a,b = li
count = 0
for i in range(a,b+1):if k * f(i) == i:count += 1print(count)

示例6: 

 - 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,>并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
# [2,3,5,7]
- 输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
- 输出描述:
输出对数
- 示例1 :
输入:
    10
输出:
    2

num = int(input())
def isPrime(num):       # 判断输入的数是否是质数for i in range(2,num):if num % i == 0:return Falseelse:return True
# 将所有的质数放在list中
primeList = [i for i in range(2,num) if isPrime(i)]
print(primeList)                                        # 打印所有质数
count = 0                                               # 创建一个计数器
# [2,3,5,7] 3+7 5+5 7+3(重复)
for item in primeList:                                  # 遍历质数列表if (num - item) in primeList and item <= num - item:     #item <= num - item,来保证不重复count += 1
# 寻找相加等于(item1 + item2) = num
print(count)

示例7:

给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
在原始数组上进行移动操作, 勿创建新的数组;
# 输入:
    第一行是数组长度, 后续每一行是数组的一条记录;
    4
    0
    7
    0
    2
# 输出:
    调整后数组的内容;
    4
    7
    2
    0
    0 

n = ''.join(input().split())
li = [int(i) for i in n]
# 排序
def move_zero(x):if x == 0:                  # 将列表中每一项都传入和执行排序操作return 2else:return 1
print(sorted(li,key=move_zero))

示例8:

如何快速生成验证码,内推码
import random
import stringcode_str = string.ascii_letters + string.digits
# print(code_str)def gen_code(len=4):# code = ''# for i in range(len):#     new_s = random.choice(code_str)#     code += new_s# print(code)return ''.join(random.sample(code_str,len))# a = gen_code()
# print(a)print([gen_code(len=6) for i in range(100)])
print(random.sample(code_str,2))