Python函数及练习题
函数定义与使用
1. 无参数的函数;
# # 定义函数, 并不会执行;
# def hello():
# # 函数体
# print("hello")
# # 调用函数
# hello()
# print(len("hello"))
# print()
# 2. 带有参数的函数
def fun1(name):
# name = "fentiao"
# 定义函数时的变量称为形式参数, 变量名可以任意起;
print("hello %s" %(name))
fun1("fendai") # 调用函数时的参数称为实参, 该参数必须是实际存在的;
函数返回值与return语句
# length = len('hello')
# print(length)
# # 函数调用时一般有返回值;没有返回值时, python中默认返回None;
# def hello():
# print("hello")
# res = hello()
# print(res)
# def hello():
# # return 返回的表达式或者变量
# return "hello"
# res = hello()
# print(res)
return的应用
# 随机生成20个学生的成绩;
# 判断这20个学生成绩的等级;
import random
def get_level(score):
if 90 < score <= 100:
return 'A'
elif 80 < score <= 90:
return 'B'
else:
return 'C'
def main():
for i in range(20):
score = random.randint(1,100)
print("成绩为%s, 等级为%s" %(score,get_level(score)))
# scores = []
# # 生成所有的成绩;
# for count in range(20):
# scores.append(random.randint(1, 100))
# # 根据所有的成绩判断等级;
# for score in scores:
# print("成绩为%s, 等级为%s" %(score,get_level(score)))
main()
None
# C: true, false
# python: True, False
# null, nil, undefined
var = None
print(type(var))
a = print()
print(a)
print(a == None)
# 函数如果有返回值, 可以将函数赋值给一个变量;
m = max([1,2,3,4,5])
print(m)
返回值有多个
def fun(a): # a = [34, 1, 2, 3, 4, 5, 6, 7, 2378]
# 我接收一个列表, 求这个列表的最大值,平均值, 最小值;
max_num = max(a)
min_num = min(a)
avg_num = sum(a)/len(a)
# python函数中, 只能返回一个值;
# 如果非要返回多个值, 会把返回的值封装为一个元组数据类型;
return max_num, avg_num, min_num
variables = fun([34, 1, 2, 3, 4, 5, 6, 7, 2378])
print(variables, type(variables))
形参_必选参数
def add(x, y, z): # x=1, y=2
return x + y + z
print(add(2,3,4))
形参_默认参数
# # 如果实参只有一个, x=。。。, y=2
# # 如果实参只有2个, x=2, y=3
# def mypow(x, y=2):
# return x ** y
# print(mypow(2))
# print(mypow(2, 3))
# print内置函数, 默认的end='\n',进行换行, 当然可以指定end的值;
# print("hello")
# print("world")
# print("hello", end=',')
# print("world")
形参_可变参数
# 可变参数, *变量名;
# *args, args实质是一个元组;
def mySum(*args):
print(args, type(args))
return sum(args)
print(mySum(1,2,3,4,5))
# 如果已经存在;列表, 但是要把列表的每一个元素作为参数, 可以直接*li进行解包;
# li = range(1,1001)
# li = (1,2,3)
li = {1,2,3}
print(mySum(*li))
形参_关键字参数
# **kwargs关键字参数; 接收的kwargs是字典类型;
def fun(**kwargs):
print(kwargs, type(kwargs))
# fun(a=1, b=2)
# d = {
# 'a':1,
# 'b':2
# }
# fun(**d) # a=1,b=2
# <div id="s_tab" width=100px height=200px>网页</div>
def make_html(label, value, **kwargs):
s = ""
for k,v in kwargs.items():
s += " %s=%s" %(k,v)1
html = "<%s %s>%s</%s>" %(label, s, value, label)
return html
print(make_html("div", "网页",id="s_tab",width=100, height=200)).
函数的作用域
# 作用域:
# 局部作用域:
# 全局作用域
# 全局作用域:作用于整个脚本
num = 10
print("out fun: id=", id(num))
def fun():
# 局部作用域, 在函数运行时生效, 函数运行结束则释放;
num = 2
print("in fun: id=", id(num))
print("in fun: num = %s" %(num))
fun()
print("out fun: num =%s" %(num))
#1. num = 10
#2. fun
#3. num = 2(当函数执行结束, 变量num的值2被释放掉)
#4. num = 10
global关键字
num = 10
def fun():
# 通过global关键字声明局部变量为全局变量, 让函数执行完, 2依旧生效;
global num
num = 2
fun()
print(num)
参数检测
# 参数检测
isinstance(1, int)
True
isinstance(1.0, float)
True
isinstance(2+3j, float)
False
isinstance(2+3j, tuple)
False
isinstance(1, (int, float, long, complex))
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'long' is not defined
isinstance(1, (int, float,complex))
True
def add(x:int, y:int)->int:
"""
add: sum x and y
:param x: int,float,.....
:param y: int,float.....
:return: int
"""
if isinstance(x,(int,float,complex)) and isinstance(y,(int,float,complex)):
return x + y
else:
print("Error")
# res = add("hello", 2)
# print(res)
help(add)
# *args, **kwargs
def fun(d=2, c=3):
pass
函数参数的顺序
# 必选,> 默认,> 可变,> 关键字
def fun( num1, num2=3, *args, **kwargs):
pass
参数易错点
# 定义函数, 默认参数的默认值尽量不是可变参数;
def fun(li=[]):
li.append("hello")
return li
print(fun())
print(fun())
迭代
# iterable: 可迭代的; 可以for循环;
# s = "hello"
# # for(int i=0, i<length(s); i++)
s = 'hello'
for i in s:
print(i)
from collections import Iterable
isinstance(1, int)
print(isinstance(1,Iterable))
print(isinstance({1,2,3},Iterable))
print(reversed([1,2,3,4]))
函数练习
1.平方等式题目需求:
对于一个十进制的正整数, 定义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
# k*f(n)=n
def f(n):
res = 0
for item in str(n):
res += int(item) ** 2
return res
def isOk(k, n):
if k * f(n) == n:
return True
else:
return False
def main():
k = 51
a = 5000
b = 10000
count = 0
for i in range(a, b + 1):
if isOk(k, i):
count += 1
print(count)
main()
2.Collatz序列
编写一个名为collatz()的函数,它有一个名为number的参数。
如果参数是偶数,那么collatz()就打印出number//2,并返回
该值。如果number是奇数,collatz()就打印并返回3*number+1。
然后编写一个程序,让用户输入一个整数,并不断对这个数
调用collatz(),直到函数返回值1(令人惊奇的是,这个序列
对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学
家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,
它有时候被称为“最简单的、不可能的数学问题”)。
- 输入:
3
- 输出:
10
5
16
8
4
2
1
# def collatz(number):
# # 为偶数
# if number % 2 == 0:
# return number // 2
# else:
# return 3 * number + 1
# def main():
# num = int(input('Num:')) # 3
# while True:
# if collatz(num) == 1: # collatz(3) 3, 10, 2
# print(1)
# break
# else:
# num = collatz(num)
# print(num)
# main()
def collatz(number):
if number == 1:
exit(0)
elif number %2 == 0:
return number // 2
else:
return 3 * number + 1
num = int(input('Num:'))
while True:
num = collatz(num)
print(num)
3.(华为机试练习)题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
- 输入描述:先输入键值对的个数,然后输入成对的index和value值,以空格隔开
- 输出描述:输出合并后的键值对(多行)
- 示例1
输入
4
0 1
0 2
1 2
3 4
输出
0 3
1 2
3 4
4.(华为)题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
- 输入描述:将一个英文语句以单词为单位逆序排放。
- 输出描述:得到逆序的句子
示例1
- 输入
I am a boy
- 输出
boy a am I
s = input('s:')
print(" ".join(s.split()[::-1]))
Python函数及练习题相关推荐
- 整理了7道Python函数的练习题,希望对你学习函数有帮助
1.简述普通参数,指定参数,默认参数,动态参数的区别 普通参数:以正确的顺序传入函数,调用时数量必须和声明的一样 指定参数:参数和函数调用关系密切,函数调用使用关键字参数来确定传入的参数值,参数 允许 ...
- 4道关于Python函数的练习题
1.写函数,计算传入函数的字符串中数字.字母.以及其他的个数 def count_fuc(str):count_number=0count_a=0count_b=0for i in str:if i. ...
- Python函数文件练习题汇总
1. 什么是局部变量? 定义在函数内.在class的方法内的变量叫做局部变量. 2. 什么是全局变量? 在模块内.在所有函数外面.在class外面,这就是全局变量. 3. 局部变量和全局变量有什么区别 ...
- python函数测验题_python函数练习题
python函数练习题 python函数练习题所练习的不仅仅是函数如何使用,还包括基础知识的运用,尽管所要实现的算法在不使用函数的情况下也都能实现,而且很多算法在前面都已经学习实践过.但对初学者而言, ...
- Python 课课练 (八):函数课后练习题
目录 一.函数课后练习题 练习前置知识 Chapter One : 开启 Python 之旅 Chapter Two : Python 语言基础.运算符与表达式.程序的控制结构合集 Chapter T ...
- Day03——Python函数
函数定义和使用 1.语法 def 函数名(参数):...函数体...返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的 ...
- python基础编程练习题_Python随笔18:Python基础编程练习题1~2
Python基础练习题1 求100之内自然数中最大的能被17整除的数. 解答:既然是求100以内的最大的数,可以使用range函数,且反向遍历.我们不必遍历完范围之内所有的数,因为第一个就是最大的,也 ...
- python函数装饰嵌套_python3--函数名本质,函数嵌套,闭包,装饰器
python函数的嵌套和作用域链 函数的嵌套调用def max2(x,y): m = x if x > y else y # 三元运算 return m def max4(a,b,c,d): ...
- python练习题及答案-python装饰器练习题及答案
这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一:编写装饰器,为多个函数加上认证的功能(用户的账号 ...
最新文章
- hdu3756 三分求最小圆锥
- [TCP/IP] TCP流和UDP数据报之间的区别
- VC的MFC中重绘函数的使用总结(整理)
- .Net Core with 微服务 - Ocelot 网关
- 重学数据结构007——二叉查找树
- baidu patchrom项目开发详细教程(Being updated)
- AMD迎接变革:加速OpenCL的未来
- 各浏览器中的鼠标滚轮事件处理
- C++ 抛出和接收异常的顺序
- keep it SMPL: Automatic estimation of 3d human pose and shape from a single image
- Jquery表单与表格的运用
- 下拉树取值与赋值单元格填报(取值赋值)
- python实现拖动画笔画图_Python下使用Trackbar实现绘图板
- rm安全删除(一条命令变rm为mv)
- VINS-MONO概述
- 2008¸ß¿¼×÷ÎĸãЦ¼¯
- 2022帆软BI数据分析大赛他来了!
- 资深运维给你讲:一个小白的运维成长故事
- 什么是 HTTP cookie?
- JDK1.6的ConcurrentHashMap