题目 1477:【蓝桥杯】【入门题】字符串输入输出函数

题目 1477:字符串输入输出函数

蓝桥杯刷题群已成立,微信后台回复【蓝桥杯】,即可进入。
如果加入了之前的社群不需要重复加入。

时间限制: 1Sec 内存限制: 128MB

1. 题目描述

编写函数GetReal和GetString,在main函数中分别调用这两个函数。在读入一个实数和一个字符串后,将读入的结果依次用printf输出。

两次输入前要输出的提示信息分别是" please  input  a  number:\n”和" please  input  a  string:\n"

2. 输入

3. 输出

4. 样例输入

9.56 
hello 

5. 样例输出

please input a number:
please input a string:
9.56
hello


6. 解决方案

「Python语言」

def GetReal():
    print("please input a number:")
    n = float(input().strip())
    return n

def GetString():
    print("please input a string:")
    s = input().strip()
    return s

n = GetReal()
s = GetString()
print("%.2f" % float(n))
print(s)


知识点:函数参数

Python 的函数具有非常灵活多样的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。从简到繁的参数形态如下:

  • 位置参数 (positional argument)
  • 默认参数 (default argument)
  • 可变参数 (variable argument)
  • 关键字参数 (keyword argument)
  • 命名关键字参数 (name keyword argument)
  • 参数组合

「(1)位置参数」

def functionname(arg1):
    "函数_文档字符串"
    function_suite
    return [expression]

  • arg1 - 位置参数 ,这些参数在调用函数 (call function) 时位置要固定。

「(2)默认参数」

def functionname(arg1, arg2=v):
    "函数_文档字符串"
    function_suite
    return [expression]

  • arg2 = v - 默认参数 = 默认值,调用函数时,默认参数的值如果没有传入,则被认为是默认值。
  • 默认参数一定要放在位置参数 后面,不然程序会报错。

【例子】

def printinfo(name, age=8):
    print('Name:{0},Age:{1}'.format(name, age))

printinfo('小马')  # Name:小马,Age:8
printinfo('小马', 10)  # Name:小马,Age:10

  • Python 允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

【例子】

def printinfo(name, age):
    print('Name:{0},Age:{1}'.format(name, age))

printinfo(age=8, name='小马')  # Name:小马,Age:8

「(3)可变参数」

顾名思义,可变参数就是传入的参数个数是可变的,可以是 0, 1, 2 到任意个,是不定长的参数。

def functionname(arg1, arg2=v, *args):
    "函数_文档字符串"
    function_suite
    return [expression]

  • *args - 可变参数,可以是从零个到任意个,自动组装成元组。
  • 加了星号(*)的变量名会存放所有未命名的变量参数。

【例子】

def printinfo(arg1, *args):
    print(arg1)
    for var in args:
        print(var)

printinfo(10)  # 10
printinfo(70, 60, 50)

# 70
# 60
# 50

「(4)关键字参数」

def functionname(arg1, arg2=v, *args, **kw):
    "函数_文档字符串"
    function_suite
    return [expression]

  • **kw - 关键字参数,可以是从零个到任意个,自动组装成字典。

【例子】

def printinfo(arg1, *args, **kwargs):
    print(arg1)
    print(args)
    print(kwargs)

printinfo(70, 60, 50)
# 70
# (60, 50)
# {}
printinfo(70, 60, 50, a=1, b=2)
# 70
# (60, 50)
# {'a': 1, 'b': 2}

「可变参数」和「关键字参数」的同异总结如下:

  • 可变参数允许传入零个到任意个参数,它们在函数调用时自动组装为一个元组 (tuple)。
  • 关键字参数允许传入零个到任意个参数,它们在函数内部自动组装为一个字典 (dict)。

「(5)命名关键字参数」

def functionname(arg1, arg2=v, *args, *, nkw, **kw):
    "函数_文档字符串"
    function_suite
    return [expression]

  • *, nkw - 命名关键字参数,用户想要输入的关键字参数,定义方式是在nkw 前面加个分隔符 *。
  • 如果要限制关键字参数的名字,就可以用「命名关键字参数」
  • 使用命名关键字参数时,要特别注意不能缺少参数名。

【例子】

def printinfo(arg1, *, nkw, **kwargs):
    print(arg1)
    print(nkw)
    print(kwargs)

printinfo(70, nkw=10, a=1, b=2)
# 70
# 10
# {'a': 1, 'b': 2}

printinfo(70, 10, a=1, b=2)
# TypeError: printinfo() takes 1 positional argument but 2 were given

  • 没有写参数名nwk,因此 10 被当成「位置参数」,而原函数只有 1 个位置函数,现在调用了 2 个,因此程序会报错。

【例子】

def printinfo(arg1, *, nkw=1, nkw2, **kwargs):
    print(arg1)
    print(nkw)
    print(nkw2)
    print(kwargs)

printinfo(10, nkw2=2)
# 10
# 1
# 2
# {}

「(6)参数组合」

在 Python 中定义函数,可以用位置参数、默认参数、可变参数、命名关键字参数和关键字参数,这 5 种参数中的 4 个都可以一起使用,但是注意,参数定义的顺序必须是:

  • 位置参数、默认参数、可变参数和关键字参数。
  • 位置参数、默认参数、命名关键字参数和关键字参数。

要注意定义可变参数和关键字参数的语法:

  • *args 是可变参数,args 接收的是一个 tuple
  • **kw 是关键字参数,kw 接收的是一个 dict

命名关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。定义命名关键字参数不要忘了写分隔符 *,否则定义的是位置参数。

警告:虽然可以组合多达 5 种参数,但不要同时使用太多的组合,否则函数很难懂。


(0)

相关推荐

  • 教你一招 | Python: 函数参数魔法

    函数参数 在 Python 中,定义函数和调用函数都很简单,但如何定义函数参数和传递函数参数,则涉及到一些套路了.总的来说,Python 的函数参数主要分为以下几种: 必选参数 默认参数 可变参数 关 ...

  • 11个案例讲透 Python 函数参数

    接下来是正文. 1. 参数分类 函数,在定义的时候,可以有参数的,也可以没有参数. 从函数定义的角度来看,参数可以分为两种: 必选参数:调用函数时必须要指定的参数,在定义时没有等号 可选参数:也叫默认 ...

  • python到底还有哪些函数我们还没见过?原来有这么多实用的函数

    本文将将主要介绍如下内容 函数介绍 1.1 函数的定义 所谓的函数,其实就是具有特定功能的一段代码块,都可以独立的运行 . 函数有5部分组成,分别是定义函数的关键字,函数的名字,圆括号(存放函数的参数 ...

  • Python函数的参数是如何工作的?

    https://m.toutiao.com/is/Jwaod7L/ 我们先探讨在Python中如何将参数传递给函数的相关细节,然后回顾与这些概念相关的良好软件工程实践的一般理论. 通过了解Python ...

  • 每日一课 | 详解抽象之函数

    昨天 Python大本营每日一课 大家好,我是营长,上期营长分享了数据科学"的知识点:,不清楚的小伙伴可戳这

  • Python学习—函数

    刚开始学习Python函数的时候,觉得自己C语言用的很溜,Python函数应该没啥难度,结果越学越觉得自己就是孤陋寡闻,不明白的,一知半解的东西太多,觉得自己这几年完全荒废了,丧失了学习的劲头:还好在 ...

  • python函数的参数类型总结

    定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return语句返回. def power(x, n=2): ...

  • Python中的*args和**kwargs

    在Python中的代码中经常会见到这两个词 args 和 kwargs,前面通常还会加上一个或者两个星号.其实这只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数:kw ...

  • 算法创作|蓝桥杯真题分糖果问题解决方法

    问题描述有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一半给左手边的孩子.一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数.反复 ...

  • 算法创作|2020蓝桥杯真题-跑步锻炼

    问题描述小蓝每天都锻炼身体.正常情况下,小蓝每天跑 1 千米.如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米.如果同时是周一或月初,小蓝也是跑 2 千米.小蓝跑步已经坚持了很长时间 ...

  • Python | 2020蓝桥杯真题-寻找2020

    问题描述小蓝有一个数字矩阵,里面只包含数字 0 和 2.小蓝很喜欢 2020,他想找到这个数字矩阵中有多少个 2020 .小蓝只关注三种构成 2020 的方式:· 同一行里面连续四个字符从左到右构成 ...

  • Python|蓝桥杯真题-单词分析

    问题描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度.小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个 ...

  • Python|2020蓝桥杯真题-跑步训练

    引言蓝桥杯是国内始终领跑的人才培养选拔模式并获得行业深度认可的IT类科技竞赛.问题描述小明要做一个跑步训练.初始时,小明充满体力,体力值计为 10000.如果小明跑步,每分钟损耗600 的体力.如果小 ...

  • Python|2018蓝桥杯真题练习—哪天返回

    问题描述 小明被不明势力劫持.后莫名其妙被扔到x星站再无问津.小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文.他决定在x星战打工.好心的老板答应包食宿,第1天给他1元钱.并且,以后 ...

  • Python | 2018蓝桥杯真题练习—猴子分香蕉

    问题描述 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去.第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉.第2只猴子醒来,重新把 ...

  • 题目 1471:【蓝桥杯】【入门题】【基础练习VIP】矩形面积交

    题目 1471:矩形面积交 蓝桥杯刷题群已成立,微信后台回复[蓝桥杯],即可进入. 如果加入了之前的社群不需要重复加入. 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 平面上有两个矩形 ...

  • 题目 1470:【蓝桥杯】【入门题】【基础练习VIP】时间转换

    题目 1470:字符逆序 蓝桥杯刷题群已成立,微信后台回复[蓝桥杯],即可进入. 如果加入了之前的社群不需要重复加入. 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 给定一个以秒为单位 ...