函数定义与使用

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函数及练习题相关推荐

  1. 整理了7道Python函数的练习题,希望对你学习函数有帮助

    1.简述普通参数,指定参数,默认参数,动态参数的区别 普通参数:以正确的顺序传入函数,调用时数量必须和声明的一样 指定参数:参数和函数调用关系密切,函数调用使用关键字参数来确定传入的参数值,参数 允许 ...

  2. 4道关于Python函数的练习题

    1.写函数,计算传入函数的字符串中数字.字母.以及其他的个数 def count_fuc(str):count_number=0count_a=0count_b=0for i in str:if i. ...

  3. Python函数文件练习题汇总

    1. 什么是局部变量? 定义在函数内.在class的方法内的变量叫做局部变量. 2. 什么是全局变量? 在模块内.在所有函数外面.在class外面,这就是全局变量. 3. 局部变量和全局变量有什么区别 ...

  4. python函数测验题_python函数练习题

    python函数练习题 python函数练习题所练习的不仅仅是函数如何使用,还包括基础知识的运用,尽管所要实现的算法在不使用函数的情况下也都能实现,而且很多算法在前面都已经学习实践过.但对初学者而言, ...

  5. Python 课课练 (八):函数课后练习题

    目录 一.函数课后练习题 练习前置知识 Chapter One : 开启 Python 之旅 Chapter Two : Python 语言基础.运算符与表达式.程序的控制结构合集 Chapter T ...

  6. Day03——Python函数

    函数定义和使用 1.语法 def 函数名(参数):...函数体...返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的 ...

  7. python基础编程练习题_Python随笔18:Python基础编程练习题1~2

    Python基础练习题1 求100之内自然数中最大的能被17整除的数. 解答:既然是求100以内的最大的数,可以使用range函数,且反向遍历.我们不必遍历完范围之内所有的数,因为第一个就是最大的,也 ...

  8. python函数装饰嵌套_python3--函数名本质,函数嵌套,闭包,装饰器

    python函数的嵌套和作用域链 函数的嵌套调用def max2(x,y): m = x if x > y else y  # 三元运算 return m def max4(a,b,c,d): ...

  9. python练习题及答案-python装饰器练习题及答案

    这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一:编写装饰器,为多个函数加上认证的功能(用户的账号 ...

最新文章

  1. hdu3756 三分求最小圆锥
  2. [TCP/IP] TCP流和UDP数据报之间的区别
  3. VC的MFC中重绘函数的使用总结(整理)
  4. .Net Core with 微服务 - Ocelot 网关
  5. 重学数据结构007——二叉查找树
  6. baidu patchrom项目开发详细教程(Being updated)
  7. AMD迎接变革:加速OpenCL的未来
  8. 各浏览器中的鼠标滚轮事件处理
  9. C++ 抛出和接收异常的顺序
  10. keep it SMPL: Automatic estimation of 3d human pose and shape from a single image
  11. Jquery表单与表格的运用
  12. 下拉树取值与赋值单元格填报(取值赋值)
  13. python实现拖动画笔画图_Python下使用Trackbar实现绘图板
  14. rm安全删除(一条命令变rm为mv)
  15. VINS-MONO概述
  16. 2008¸ß¿¼×÷ÎĸãЦ¼¯
  17. 2022帆软BI数据分析大赛他来了!
  18. 资深运维给你讲:一个小白的运维成长故事
  19. 什么是 HTTP cookie?
  20. JDK1.6的ConcurrentHashMap

热门文章

  1. 蓝桥杯python组练题第二天——成绩统计——蓝桥杯官网题库
  2. HTML版的使用three.js加载obj和mtl文件并上贴图
  3. json解析工具之jackson的常用实例
  4. windows cmd bat获取局域网本机ip
  5. vue和原生js的优点分析
  6. mysql没有配置文件_MySQL没有my.cnf配置文件如何解决
  7. 如何掌握SWAT模型在水文水资源、面源污染模拟中的实践技术?
  8. 3.数据挖掘——房价项目预测(三)Pandas学习
  9. 宝藏!揭秘如何写好软考论文框架1000+字
  10. 微信敏感词都有什么?