Python头歌合集(题集附解)

慈云数据 2024-05-30 技术支持 35 0

在这里插入图片描述

目录

一、Python初识-基本语法 

第1关:Hello Python!

 第2关:我想看世界

 第3关:学好Python

 第4关:根据圆的半径计算周长和面积

 第5关:货币转换

 二、turtle简单绘图

第1关:英寸与厘米转换

 第2关:绘制等边三角形

 第3关:绘制两个叠加的等边三角形

 第4关:绘制三个叠加的等边三角形

 第5关:绘制圆圈

 三、数字与字符串类型及其操作

第1关:银行存款本金和计算

第2关:将整数换算为月份数和天数

 第3关:将整数换算为天、时、分、秒

 第4关:回文数判断

 第5关:字符串的拼接:名字的组成

第6关:字符替换 

第7关:字符串查找与替换 

四、Python 入门之函数结构 

第1关:函数的参数 - 求输入的整数之和

第2关:函数的返回值 - 求两个正整数的最大公约数 

第3关:函数的使用范围与Python 作用域-求两个正整数的最小公倍数 

五、函数和代码复用1 

第1关:圆面积计算函数

第2关:素数判断

 第3关:求和函数

 第4关:最大公约数

 第5关:最小公倍数

 六、Python 入门之经典函数实例

第1关:lambda 函数 - 匿名函数的使用-比较两数大小

 第2关:递归函数 - 汉诺塔的魅力

 七、分支和循环结构

第1关:英寸与厘米互换

 第2关:百分制转换为等级制成绩

 第3关:三角形图案打印

 第4关:输出九九乘法表

 第5关:水仙花数判断

 八、函数和代码复用2

第1关:温度转化函数

 第2关:在函数中修改全局变量

 第3关:一元二次方程求解函数v1

 第4关:一元二次方程求解函数v2

 第5关:使用递归

 九、列表

第1关:列表元素的增删改:客人名单的变化

 第2关:列表元素的排序:给客人排序

 第3关:数值列表:用数字说话

 第4关:列表切片:你的菜单和我的菜单

 第5关:列表与循环 - 验证是否为三位数

 十、元组与字典

第1关:元组的使用:这份菜单能修改吗?

 第2关:字典的使用:这份菜单可以修改

 第3关:字典的遍历:菜名和价格的展示

 第4关:嵌套 - 菜单的信息量好大

 第5关:统计投票结果

 十一、Python 计算思维训练——文件操作与异常处理

第1关:从文件中读取数据:信息时代已经到来

 第2关:将信息写入文件:会读会写方为正道


一、Python初识-基本语法 

        Python 是一种面向对象的解释型计算机程序设计语言,以其简洁性、易读性、可扩展性、丰富和强大的功能库,语言表达能力极强,很多非常复杂的功能,只需简单几行代码即可实现,成为最受欢迎的程序设计语言之一。

        本实训的主要目标是,让学习者通过 Python 交互式编程以及脚本编程,实现一个简单的打印字符串功能,感受和体验 Python 编程,并对 Python 建立一个初步的认识。

第1关:Hello Python! 

任务描述

利用 Python 提供的print()内置函数,打印输出Hello Python!,初步体验和感受 Python 编程的魅力。

输入

输出

Hello Python!


开始你的任务吧,祝你成功!

#coding=utf-8
#请在此处添加代码完成输出“Hello Python”,注意要区分大小写!
###### Begin ######
print("Hello Python!")
###### End ######

 第2关:我想看世界

任务描述

本关任务:字符串拼接。接收用户输入的两个字符串,将它们组合后输出。

相关知识

为了完成本关任务,你需要掌握: 1.如何使用input()函数,获得用户输入的字符串; 2.输出函数print()如何按照期望的格式输出字符信息。

输入与输出

输入1: 请输入一个人的名字:张三 请输入一个国家的名字:美国

输出1: 世界那么大,张三想去美国看看。

输入2: 请输入一个人的名字:三毛 请输入一个国家的名字:巴西

输出2: 世界那么大,三毛想去巴西看看。


开始你的任务吧,祝你成功!

#coding=utf-8
#请在此处补充代码,按要求完成输出
###### Begin ######
name=input('请输入一个人的名字:')
country=input('请输入一个国家的名字:')
print('世界那么大,'+name+'想去'+country+'看看。')
###### End ######

 第3关:学好Python

任务描述

本关任务:简单的人名对话。

相关知识

为了完成本关任务,你需要掌握: 1.如何格式化输入输出; 2.如何截取字符串。

输入输出

测试输入:风清扬

预期输出:

风清扬同学,学好Python,前途无量!

风大侠,学好Python,大展拳脚!

清扬哥哥,学好Python,人见人爱!


开始你的任务吧,祝你成功!

#coding=utf-8
#请在此处补充代码,按要求完成输出
###### Begin ######
name=input("输入姓名:")
print("{}同学,学好Python,前途无量!".format(name))     #请将命令行补充完整
print("{}大侠,学好Python,大展拳脚!".format(name[0]))                                              #请将命令行补充完整
print("{}哥哥,学好Python,人见人爱!".format(name[1:]))                                              #请将命令行补充完整
###### End ######

 第4关:根据圆的半径计算周长和面积

任务描述

本关任务:编写一个能计算圆的周长和面积的程序。 结果保留小数点后两位。

输入输出

测试输入:3            预期输出: 周长: 18.85 面积: 28.27

测试输入:6.2         预期输出: 周长: 38.96 面积: 120.76

相关知识

可以用eval(input())将所获得的input()输入值由字符串转为数值。


开始你的任务吧,祝你成功!

"""
输入半径计算圆的周长和面积
"""
import math
pi = math.pi   #pi = 3.14159
#*******请输入您的代码********#
#***********begin************#
r = eval(input())
c = 2*pi*r
s = pi*r**2
print('周长:'+' {:.2f}'.format(c))
print('面积:'+' {:.2f}'.format(s))
#***********end************#

 第5关:货币转换

任务描述

本关任务:编写一个人民币和美元两种货币间币值转换程序。其中,人民币和美元间汇率固定为:1美元 = 6.4人民币。

程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元采用USD表示,符号和数值之间没有空格。 注意: (1) 结果小数点后保留两位。

(2) 获得输入请使用input("") 。

输入输出

测试输入1:USD12; 预期输出1:RMB76.8

测试输入2:RMB76.8; 预期输出2:USD12


开始你的任务吧,祝你成功!

"""
人民币和美元两种货币间币值转换
"""
#********请输入您的代码********#
#************begin************#
a=input("")
if a[0] in ["R"]:
    c=eval(a[3:])/6.4
    print("USD{:.2f}".format(c))
elif a[0] in ["U"]:
    b=eval(a[3:])*6.4
    print("RMB{:.2f}".format(b))
else:
    print("输入格式错误")
#************end************#

 二、turtle简单绘图

第1关:英寸与厘米转换

任务描述

本关任务: 屏幕尺寸是指液晶显示器屏幕对角线的长度,单位为英寸。编写一个英寸和厘米两种长度单位间的转换程序。其中,转换关系为:1厘米= 0.393700787402英寸, 1英寸= 2.54厘米。

程序可以接受英寸或厘米输入,转换为厘米或英寸输出。英寸采用IN表示,厘米采用CM表示,符号和数值之间没有空格。 注意: (1) 结果小数点后保留两位。

(2) 获得输入请使用input("") 。

输入输出

测试输入1:IN12;                 预期输出1:CM30.48

测试输入2:CM76;                 预期输出2:IN29.92

测试输入3:C76;                   预期输出3:输入不符合要求!


开始你的任务吧,祝你成功!

"""
cm与inch转换
"""
#********请输入您的代码********#
#************begin************
a=input("")
if a[0:2] in ["IN"]:
    C=eval(a[2:])*2.54
    print("CM{:.2f}".format(C))
elif a[0:2] in ["CM"]:
    I=eval(a[2:])*0.393700787402
    print("IN{:.2f}".format(I))
else:
    print("输入不符合要求!")
#************end************#

 第2关:绘制等边三角形

任务描述

仿照教材例5-3画五角星程序,编写程序导入turtle库,并画出如图所示的等边三角形。要求边长为200,三边颜色为红色。

相关知识

模块导入

在使用模块中的函数之前,需要先将模块用import命令导入,有两种形式:

  1. import turtle

创建turtle对象

  1. Bob = turtle.Turtle()

表示在系统中创建了一个Turtle类型的对象,将其命名为Bob.

turtle的部分运动和画笔控制函数

下表给出了turtle的部分运动函数

函数别名(缩写)功能
forward(d)fd(d)向前移动距离d代表距离
backward(d)bk(d)或back(d)向后移动距离d代表距离
right(degree)rt(degree)向右转动多少度
left(degree)It(degree)向左转动多少度
goto(x,y)将画笔移动到坐标为(x,y)的位置
stamp()绘制当前图形
speed(speed)画笔绘制的速度范围[0,10]整数
setheading(degree)seth(degree)海龟朝向,degree代表角度
circle(radius,extent)绘制一个圆形,其中,radius为半径,extent为度数,例如,若extent为180,则画一个半圆;如果画一个圆形,可不必写第2个参数

下表给出了turtle的部分画笔控制函数

函数别名(缩写)功能
pendown()down()或pd()画笔落下,移动时绘制图形
penup()up()或pu()画笔拾起,移动时不绘制图形
reset()恢复所有设置
pensize(width)width()画笔的宽度
pencolor(colorstring)画笔的颜色
fillcolor(colorstring)绘制图形的填充颜色

编程要求

本关的编程任务是补全文件的代码内容,实现如下功能:

  • step1:用import命令导入turtle模块;
  • step2:创建turtle对象;
  • step3:用pencolor函数设置画笔的颜色;
  • step4:使用turtle的运动函数绘制图形。 本关涉及的代码文件 的代码框架如下:
    1. # coding = utf-8
    2. # 请在下面添加代码绘制任务中的等边三角形
    3. ###### Begin ######
    4. ####### End #######

    开始你的任务吧,祝你成功!

    #********* Begin *********#
    import turtle
    turtle.pencolor("red")
    turtle.pendown()
    turtle.seth(0)
    turtle.fd(200)
    turtle.seth(120)
    turtle.fd(200)
    turtle.seth(240)
    turtle.fd(200)
    turtle.seth(0)
    #********* End *********#
    #保存屏幕图片
    ts = turtle.getscreen()
    ts.getcanvas().postscript(file="Python/src1/py1-2/yourimg/sj.ps")

     第3关:绘制两个叠加的等边三角形

    任务描述

    仿照教材例5-3画五角星程序,编写程序导入turtle库,并画出如图所示的等边三角形。外面三角形边长为200,三边颜色为红色;里面的三角形边长为100,三边颜色为蓝色,填充颜色为黄色。

    相关知识

    模块导入

    在使用模块中的函数之前,需要先将模块用import命令导入,有两种形式:

    1. import turtle
    2. from turtle import *

    其中,*是通配符,表示所有函数

    创建turtle对象

    1. Bob = turtle.Turtle()

    表示在系统中创建了一个Turtle类型的对象,将其命名为Bob.

    turtle的部分运动和画笔控制函数

    • 下表给出了turtle的部分运动函数
      函数别名(缩写)功能
      forward(d)fd(d)向前移动距离d代表距离
      backward(d)bk(d)或back(d)向后移动距离d代表距离
      right(degree)rt(degree)向右转动多少度
      left(degree)It(degree)向左转动多少度
      goto(x,y)将画笔移动到坐标为(x,y)的位置
      stamp()绘制当前图形
      speed(speed)画笔绘制的速度范围[0,10]整数
      setheading(degree)seth(degree)海龟朝向,degree代表角度
      circle(radius,extent)绘制一个圆形,其中,radius为半径,extent为

      度数,例如,若extent为180,则画一个半圆;如果画一个圆形,可不必写第2个参数 |

      • 下表给出了turtle的部分画笔控制函数
        函数别名(缩写)功能
        pendown()down()或pd()画笔落下,移动时绘制图形
        penup()up()或pu()画笔拾起,移动时不绘制图形
        reset()恢复所有设置
        pensize(width)width()画笔的宽度
        pencolor(colorstring)画笔的颜色
        fillcolor(colorstring)绘制图形的填充颜色
        • 绘制填充图像前后需要添加的函数:
          1. turtle.begin_fill()#准备开始填充图形;
          2. turtle.end_fill()#填充完成;

          编程要求

          本关的编程任务是补全文件的代码内容,绘制出任务描述中两个叠加等边三角形。 本关涉及的代码文件 的代码框架如下:

          1. # coding = utf-8
          2. # 请在下面添加代码绘制任务中的两个叠加等边三角形
          3. ###### Begin ######
          4. ####### End #######

          开始你的任务吧,祝你成功!

          #********* Begin *********#
          import turtle
          turtle.pencolor("red")
          turtle.pendown()
          turtle.seth(0)
          turtle.fd(200)
          turtle.seth(120)
          turtle.fd(200)
          turtle.seth(240)
          turtle.fd(200)
          turtle.seth(0)
          turtle.penup()
          turtle.fd(100)
          turtle.pendown()
          turtle.color("blue","yellow")
          turtle.begin_fill()
          turtle.seth(60)
          turtle.fd(100)
          turtle.seth(180)
          turtle.fd(100)
          turtle.seth(-60)
          turtle.fd(100)
          turtle.end_fill()
          #********* End *********#
          #保存屏幕图片
          ts = turtle.getscreen()
          ts.getcanvas().postscript(file="Python/src1/py1-3/yourimg/sj.ps")
          

           第4关:绘制三个叠加的等边三角形

          任务描述

          仿照教材例5-3画五角星程序,编写程序导入turtle库,并画出如图所示的等边三角形。最外面三角形边长为200,三边颜色为红色,次外面的三角形边长为100,三边颜色为蓝色,填充颜色为黄色;最里面的三角形三边长度为50,颜色为红色,填充颜色为白色。

          相关知识

          - 模块导入

          在使用模块中的函数之前,需要先将模块用import命令导入,有两种形式:

          1. import turtle
          2. from turtle import *

          其中,*是通配符,表示所有函数

          - 创建turtle对象

          1. Bob = turtle.Turtle()

          表示在系统中创建了一个Turtle类型的对象,将其命名为Bob.

          - turtle的部分运动和画笔控制函数

          • 下表给出了turtle的部分运动函数
            函数别名(缩写)功能
            forward(d)fd(d)向前移动距离d代表距离
            backward(d)bk(d)或back(d)向后移动距离d代表距离
            right(degree)rt(degree)向右转动多少度
            left(degree)It(degree)向左转动多少度
            goto(x,y)将画笔移动到坐标为(x,y)的位置
            stamp()绘制当前图形
            speed(speed)画笔绘制的速度范围[0,10]整数
            setheading(degree)seth(degree)海龟朝向,degree代表角度
            circle(radius,extent)绘制一个圆形,其中,radius为半径,extent为

            度数,例如,若extent为180,则画一个半圆;如果画一个圆形,可不必写第2个参数 |

            • 下表给出了turtle的部分画笔控制函数
              函数别名(缩写)功能
              pendown()down()或pd()画笔落下,移动时绘制图形
              penup()up()或pu()画笔拾起,移动时不绘制图形
              reset()恢复所有设置
              pensize(width)width()画笔的宽度
              pencolor(colorstring)画笔的颜色
              fillcolor(colorstring)绘制图形的填充颜色
              • 绘制填充图像前后需要添加的函数:
                1. turtle.begin_fill()#准备开始填充图形;
                2. turtle.end_fill()#填充完成;

                编程要求

                本关的编程任务是补全文件的代码内容,绘制出任务描述中两个叠加等边三角形。 本关涉及的代码文件 的代码框架如下:

                1. # coding = utf-8
                2. # 请在下面添加代码绘制任务中的两个叠加等边三角形
                3. ###### Begin ######
                4. ####### End #######

                开始你的任务吧,祝你成功!

                #********* Begin *********#
                import turtle
                turtle.pencolor("red")
                turtle.fd(200)
                turtle.seth(120)     
                turtle.fd(200)
                turtle.seth(240)     
                turtle.fd(200)
                turtle.seth(0)     
                turtle.fd(100)
                turtle.begin_fill()
                turtle.color("blue","yellow")
                turtle.seth(60)     
                turtle.fd(100)
                turtle.seth(180)    
                turtle.fd(100)
                turtle.seth(-60)
                turtle.fd(100)
                turtle.seth(60)
                turtle.end_fill()
                turtle.fd(50)
                turtle.seth(120)
                turtle.begin_fill()
                turtle.color("red","white")
                turtle.fd(50)
                turtle.seth(-120)
                turtle.fd(50)
                turtle.seth(0)
                turtle.fd(50)
                turtle.end_fill()
                #********* End *********#
                #保存屏幕图片
                ts = turtle.getscreen()
                ts.getcanvas().postscript(file="Python/src1/py1-4/yourimg/sj.ps")
                

                 第5关:绘制圆圈

                任务描述

                本关任务:

                利用海龟turtle来画几个叠加圈。

                绘制要求:

                • 每个圆半径为40像素
                • 上面三圆颜色自左向右依次为蓝、黑、红,下面两圆颜色自左向右依次为黄、绿,绘制顺序依次为蓝、黑、红、绿、黄
                • 每一个圆绘制时均从该圆上的最低点开始绘制,每次绘制一个完整的圆,直到结束
                • 画笔绘制起点为画布原点,画笔宽度为3

                  输入

                  输出

                  5 O


                  开始你的任务吧,祝你成功!

                  #********* Begin *********#
                  import turtle
                  turtle.speed(0)
                  turtle.pensize(3)
                  turtle.up()
                  turtle.goto(0, 0)
                  turtle.down()
                  turtle.color('blue')
                  turtle.circle(40)
                  turtle.up()
                  turtle.goto(80, 0)
                  turtle.down()
                  turtle.color('black')
                  turtle.circle(40)
                  turtle.up()
                  turtle.goto(160, 0)
                  turtle.down()
                  turtle.color('red')
                  turtle.circle(40)
                  turtle.up()
                  turtle.goto(120, -40)
                  turtle.down()
                  turtle.color('green')
                  turtle.circle(40)
                  turtle.up()
                  turtle.goto(40, -40)
                  turtle.down()
                  turtle.color('yellow')
                  turtle.circle(40)
                  #********* End *********#
                  #保存屏幕图片
                  ts = turtle.getscreen()
                  ts.getcanvas().postscript(file="Python/src1/py1-5/yourimg/sj.ps")
                  

                   三、数字与字符串类型及其操作

                  第1关:银行存款本金和计算

                  任务描述

                  编写一个能计算银行存款复利的小程序。假设目前银行年利率是1.5%,输入你的存款数,计算5年后的本金和。 本金和=本金∗(1+年利率)^n n是年数。

                  输入

                  存款金额。

                  输出

                  5年存款的本金和。

                  测试输入:50000

                  预期输出:53864.20


                  开始你的任务吧,祝你成功!

                  # coding = utf-8
                  # 请在下面添加代码
                  ###### Begin ######
                  a=eval(input())
                  for i in range(5):
                      s=a*(1+0.015)**5
                  print("{:.2f}".format(s))
                  ####### End #######

                  第2关:将整数换算为月份数和天数

                  任务描述

                  在指定的编写程序,输入一个整数,把这个整数换算为月份数和天数,每月以30天计算。

                  相关知识

                  - 要用到的函数

                  • input函数 input函数为一个输入函数,是Python的内置函数中最常用的函数之一,其基本功能是获取键盘输入的数据源。input函数的基本语法举例如下:

                    1. a=int(input())
                    2. print(a)

                    将input函数获取的数据用int函数转换为整数。

                    • print函数 print函数是Python的内置函数中最常用的函数之一,其基本功能是打印输出一个对象。print函数的基本语法举例如下: (1)例1
                       
                           
                      1. print('Hello World')

                    (2)例2

                    1. y=5
                    2. x=6
                    3. print( "y = %d ,x = %d" % (y,x) )

                    具体执行结果会在终端打印输出下述字符串: 其中, print中的“y = ”和“x = ”为两个字符串,直接输出; %d 是用来设置x和y的输出格式为整数; %(x,y)中的x和y是要输出的变量,输出的为x和y的值。

                    • format函数 format的功能是使任意数据转换成字符串。format函数的基本语法举例如下:
                       
                           
                      1. a=8
                      2. b=7.333
                      3. print("{:d} , {:.2f}".format(a,b))
                      具体执行结果会在终端打印输出下述字符串:  其中, {:d} 表示将a输出为整数,d表示整数; {:.2f} 表示将b输出浮点数,保留两位小数,f表示浮点数; format(a,b) 是将a与b的值转换成字符串。

                    - 数字类型的内置运算符与内置函数

                    • 数字类型的内置运算符与内置函数如下表所示:
                      运算与函数名结果
                      x + y计算 x 与 y的和
                      x - y计算 x 与 y的差
                      x * y计算 x 与 y的积
                      x / y计算 x 与 y的商
                      x // y计算 x 与 y的整数商,即不大于计算 x / y的整数
                      x % y计算 x 除以 y的余数
                      - xx 的负值
                      + xx 本身
                      abs(x)返回x的绝对值
                      int(x)将x 转换成整数
                      float(x)将x 转换成浮点数
                      complex(re, im)生成一个复数,实部为re, 虚部为 im. im 默认为0
                      divmod(x, y)返回一个二元组(x // y, x % y),即整数对
                      pow(x, y)返回 xy
                      x ** y计算 xy
                      round(x,n)返回x四舍五入,保留n位小数的值
                      max(x1,x2,..,xn)返回x1,x2,..,xn中最大值
                      min(x1,x2,..,xn)返回x1,x2,..,xn中最小值

                      编程要求

                      本关的编程任务是补全文件的代码内容,输入一个整数,把这个整数换算为月份数和天数,每月以30天计算。 注意:在输出时用format函数将数字转换成字符串输出。

                      本关涉及的代码文件 的代码框架如下:

                      1. # coding = utf-8
                      2. data=int(input())
                      3. # 请在下面添加代码
                      4. ###### Begin ######
                      5. ####### End #######

                      以下是平台对&的样例测试集: 测试输入: 100 预期输出: Months=3 Days=10

                      测试说明

                      本关的测试文件是 src/p5-1-4.py,测试过程如下: 1.读者将src/p5-1-4.py中的代码补充完毕,然后点击测评,平台自动编译并运行,并以标准输入方式提供测评输入; 2.平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。

                      开始你的任务吧,祝你成功!

                      # coding = utf-8
                      data=int(input())
                      # 请在下面添加代码
                      ###### Begin ######
                      c=data//30
                      x=data%30
                      print("Months={:.0f} Days={:.0f}".format(c,x))
                      ####### End #######

                       第3关:将整数换算为天、时、分、秒

                      任务描述

                      编写程序,输入一个任意位数大于0的整数,作为秒数,将此整数换算为天、时、分、秒,并按“天:时:分:秒”的形式显示结果。

                      相关知识

                      - 要用到的函数

                      • input函数 input函数为一个输入函数,是Python的内置函数中最常用的函数之一,其基本功能是获取键盘输入的数据源。input函数的基本语法举例如下:

                        1. a=int(input())
                        2. print(a)

                        将input函数获取的数据用int函数转换为整数。

                      • print函数 print函数是Python的内置函数中最常用的函数之一,其基本功能是打印输出一个对象。print函数的基本语法举例如下: (1)例1

                        1. print('Hello World')

                        (2)例2

                        1. y=5
                        2. x=6
                        3. print( "y = %d ,x = %d" % (y,x) )

                        其中, print中的“y = ”和“x = ”为两个字符串,直接输出; %d 是用来设置x和y的输出格式为整数; %(x,y)中的x和y是要输出的变量,输出的为x和y的值。

                      • format函数 format的功能是使任意数据转换成字符串。format函数的基本语法举例如下:

                         
                           
                        1. a=8
                        2. b=7.333
                        3. print("{:d} , {:.2f}".format(a,b))

                        其中, {:d} 表示将a输出为整数,d表示整数; {:.2f} 表示将b输出浮点数,保留两位小数,f表示浮点数; format(a,b) 是将a与b的值转换成字符串。

                        - 数字类型的内置运算符与内置函数

                        • 数字类型的内置运算符与内置函数如下表所示:
                          运算与函数名结果
                          x + y计算 x 与 y的和
                          x - y计算 x 与 y的差
                          x * y计算 x 与 y的积
                          x / y计算 x 与 y的商
                          x // y计算 x 与 y的整数商,即不大于计算 x / y的整数
                          x % y计算 x 除以 y的余数
                          - xx 的负值
                          + xx 本身
                          abs(x)返回x的绝对值
                          int(x)将x 转换成整数
                          float(x)将x 转换成浮点数
                          complex(re, im)生成一个复数,实部为re, 虚部为 im. im 默认为0
                          divmod(x, y)返回一个二元组(x // y, x % y),即整数对
                          pow(x, y)返回 xy
                          x ** y计算 xy
                          round(x,n)返回x四舍五入,保留n位小数的值
                          max(x1,x2,..,xn)返回x1,x2,..,xn中最大值
                          min(x1,x2,..,xn)返回x1,x2,..,xn中最小值

                          编程要求

                          本关的编程任务是补全文件的代码内容,输入一个任意位数大于0的整数,作为秒数,将此整数换算为天、时、分、秒,并按“天:时:分:秒”的形式显示结果。 注意:在输出时用format函数将数字转换成字符串后输出。

                          本关涉及的代码文件 的代码框架如下:

                          1. # coding = utf-8
                          2. # 请在下面添加代码
                          3. ###### Begin ######
                          4. ####### End #######

                          以下是平台对&的样例测试集: 测试输入: 100 预期输出: 100秒是0天0时1分40秒

                          测试说明

                          本关的测试文件是src/p5-1-3.py,测试过程如下: 1.读者将src/p5-1-3.py中的代码补充完毕,然后点击测评,平台自动编译并运行,并以标准输入方式提供测评输入; 2.平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。

                          开始你的任务吧,祝你成功!

                          # coding = utf-8
                          # 请在下面添加代码
                          ###### Begin ######
                          n=int(input())
                          a=n//86400
                          b=(n%86400)//14400
                          c=((n%86400)%14400)//60
                          d=n%86400%14400%60
                          print("{:.0f}秒是{:.0f}天{:.0f}时{:.0f}分{:.0f}秒".format(n,a,b,c,d))
                          ####### End #######

                           第4关:回文数判断

                          任务描述

                          从键盘输入一个5位数,编程判断这个数字是不是回文数。 可以用str.isdigit()来判断字符串str是否是数字类型的字符串,是的话返回True,否则返回False。

                          输入

                          一个5位数。

                          输出

                          是回文数,输出“True”,否则输出“False”。 如果不是5位数字,则输出“输入有误!”

                          测试输入:12821 预期输出:True

                          测试输入:15821 预期输出:False


                          开始你的任务吧,祝你成功!

                          # coding = utf-8
                          # 请在下面添加代码
                          ###### Begin ######
                          list1=input()
                          list2=list1[::-1]
                          if len(list1)==5 and len(list2)==5:
                              if list1==list2:
                                  print("True")
                              else:
                                  print("False")
                          else:
                              print("输入有误!")
                          ####### End #######

                           第5关:字符串的拼接:名字的组成

                          任务描述

                          本关任务是将两个不同的字符串,拼接形成一个字符串,并将新字符串输出来。字符串或串(String)是由数字、字母、下划线组成的一串字符。在 Python 中,字符串用单引号或者双引号括起来。在很多情况下,我们需要将两个字符串拼接起来,形成一个字符串。

                          例如,一个人的姓名,通常是由“姓氏”+“名字”组成的。在很多程序中,为了方便后续处理,通常将姓氏和名字分别存在两个变量中。然后在显示时,要将姓氏和名字拼接起来,按全名显示。

                          1. first_name = 'Zhang'
                          2. last_name = 'san'

                          输出如下:

                          1. full_name = 'Zhang san'

                          相关知识

                          Python 中使用+来合并两个字符串,这种合并字符串的方法叫做拼接。其基本语法如下:

                          1. result_string = source_string1 + source_string2

                          其中:

                          • source_string1:待合并的第一个字符串;

                          • source_string2:待合并的第二个字符串;

                          • result_string:合并后的字符串。

                            注意:如果需要,在两个字符串之间可以增加相应的空格,具体见下面的例子。例如,将姓氏和名字拼接成全名:

                            1. # coding=utf-8
                            2. # 将姓氏和名字分别保存在两个变量中
                            3. first_name = 'Zhang'
                            4. last_name = 'san'
                            5. # 将姓氏和名字拼接,将结果存储在full_name变量中
                            6. full_name = first_name + " " + last_name
                            7. print(full_name)

                            输出结果:

                            1. Zhang san

                            如果您想了解更多有关字符串的知识,请参考:【美】 Eric Matthes 著《Python 编程——从入门到实践》第二章。

                            编程要求

                            本关的编程任务是补全src/Step1/full_name.py文件中 Begin-End 区间的代码,实现如下功能:

                            • 将存放姓氏的字符串变量和存放名字的字符串变量拼接起来,中间用一个空格隔开,并将结果存储在full_name变量中;

                            • 打印输出full_name变量。

                              测试说明

                              本关的测试文件是src/step1/full_name.py,测试过程如下:

                              1. 学习者将src/Step1/full_name.py中的代码补充完毕,然后点击评测。平台自动编译并运行full_name.py,并以标准输入方式提供测评输入;

                              2. 平台获取程序的输出,然后将其与预期输出对比。如果一致,则测试通过,否则测试失败。

                              以下是平台对src/step1/full_name.py的样例测试集:

                              测试输入:

                              1. Hu
                              2. dong

                              预期输出:

                              1. Hu dong

                              开始你的任务吧,祝你成功!

                              # coding=utf-8
                              # 存放姓氏和名字的变量
                              first_name = input()
                              last_name = input()
                              # 请在下面添加字符串拼接的代码,完成相应功能
                              ########## Begin ##########
                              print(first_name+" "+last_name)
                              ########## End ##########

                              第6关:字符替换 

                              任务描述

                              有段英文,其中有单独字母“P”被误写为“p”,请编写程序进行纠正。

                              输入

                              用户输入一个字符串。

                              输出

                              输出字符串,其中原本包含的英文字母“p”全部被替换为“P”。

                              以下是平台样例测试集:

                              测试输入:python 预期输出:Python


                              开始你的任务吧,祝你成功!

                              # coding=utf-8
                              # 获取待处理的源字符串
                              source_string = input()
                              # 请在下面添加字符串转换的代码
                              ########## Begin ##########
                              a=source_string.replace("p","P")
                              print(a)
                              ########## End ##########
                              

                              第7关:字符串查找与替换 

                              任务描述

                              本关的任务是,给定一个字符串,要利用 Python 提供的字符串处理方法,从该字符串中,查找特定的词汇,并将其替换为另外一个更合适的词。例如,给定一个字符串Where there are a will, there are a way,我们发现这句话中存在语法错误,其中are应该为is,需要通过字符串替换将其转换为Where there is a will, there is a way。

                              在大家日常工作使用 Word 编写文档的过程中,经常会遇到一个问题,发现前面写的文档中某个词用错了,需要换为另外一个词来表达。Word 提供了全文查找与替换的功能,可以帮助用户很方便的处理这一问题。那么,这一功能最基础和核心的就是字符替换,如果我们要自己基于 Python 来实现,该怎么做呢?

                              相关知识

                              本关的小目标:学习并掌握 Python 中常用的字符串方法,包括字符串查找、字符串切分、字符串替换等。

                              字符串查找

                              Python 提供了内置的字符串查找方法find(),利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1。find()方法的基本使用语法如下:

                              1. source_string.find(sub_string)

                              其中:

                              • source_string:源字符串;

                              • sub_string:待查的目标子字符串;

                              • find:字符串查找方法的语法关键字。

                                例如,在一个字符串中,查找两个单词的位置:

                                1. # coding=utf-8
                                2. # 创建一个字符串
                                3. source_string = 'The past is gone and static'
                                4. # 查看"past"在source_string字符串中的位置
                                5. print(source_string.find('past'))
                                6. # 查看"love"在source_string字符串中的位置
                                7. print(source_string.find('love'))

                                输出结果:

                                1. 4
                                2. -1

                                字符串替换

                                Python 提供了replace()方法,用以替换给定字符串中的子串。其基本使用语法如下:

                                1. source_string.replace(old_string, new_string)

                                其中:

                                • source_string:待处理的源字符串;

                                • old_string:被替换的旧字符串;

                                • new_string:替换的新字符串;

                                • replace:字符串替换方法的语法关键词。

                                  例如,在如下字符串中,用small子串替换big子串:

                                  1. # coding = utf-8
                                  2. # 创建一个字符串circle
                                  3. source_string = 'The world is big'
                                  4. # 利用replace()方法用子串"small"代替子串"big"
                                  5. print(source_string.replace('big','small'))

                                  输出结果:

                                  1. The world is small

                                  字符串分割

                                  Python 提供了split()方法实现字符串分割。该方法根据提供的分隔符,将一个字符串分割为字符列表,如果不提供分隔符,则程序会默认把空格(制表、换行等)作为分隔符。其基本使用语法如下:

                                  1. source_string.split(separator)

                                  其中:

                                  • source_string:待处理的源字符串;

                                  • separator:分隔符;

                                  • split:字符串分割方法的关键词。

                                    例如,用+、/还有空格作为分隔符,分割字符串:

                                    1. # coding = utf-8
                                    2. # 待处理字符串source_string
                                    3. source_string = '1+2+3+4+5'
                                    4. # 利用split()方法,按照`+`和`/`对source_string字符串进行分割
                                    5. print(source_string.split('+'))
                                    6. print(source_string.split('/'))

                                    输出结果:

                                    1. ['1', '2', '3', '4', '5']
                                    2. ['1+2+3+4+5']

                                    编程要求

                                    本关的编程任务是,补全src/Step3/method2.py文件中 Begin-End 区间的代码,实现如下功能:

                                    • step1 :查找输入字符串source_string中,是否存在day这个子字符串,并打印输出查找结果;

                                    • step2 :对输入字符串source_string执行字符替换操作,将其中所有的 day替换为time,并打印输出替换后的字符串;

                                    • step3 :对 step2 进行替换操作后的新字符串,按照空格进行分割,并打印输出分割后的字符列表。

                                      测试说明

                                      本关的测试文件是src/Step3/method2.py,测试过程如下:

                                      1. 学习者将src/Step3/method2.py中的代码补充完毕,然后点击评测。平台自动编译并运行method2.py,并以标准输入方式提供测评输入;

                                      2. 平台获取程序的输出,然后将其与预期输出对比。如果一致,则测试通过,否则测试失败。

                                      以下是平台对src/Step3/method2.py的样例测试集:

                                      测试输入:

                                      1. All day is no day when it is past.

                                      预期输出:

                                      1. 4
                                      2. All time is no time when it is past.
                                      3. ['All', 'time', 'is', 'no', 'time', 'when', 'it', 'is', 'past.']

                                      开始你的任务吧,祝你成功!

                                      # coding = utf-8
                                      source_string = input()
                                      # 请在下面添加代码
                                      ########## Begin ##########
                                      print(source_string.find("day"))
                                      a=source_string.replace("day","time")
                                      print(a)
                                      b=a.split(" ")
                                      print(b)
                                      
                                      ########## End ##########
                                      

                                      四、Python 入门之函数结构 

                                      第1关:函数的参数 - 求输入的整数之和

                                      任务描述

                                      当我们需要在程序中多次执行同一类型的任务时,不需要反复编写代码段来完成任务,而是可以利用函数工具来大大方便我们的编程工作。函数是可重复使用的、用来实现相关联功能的代码段。

                                      本实训的目标是让学习者了解并掌握函数结构的相关知识,本关的小目标则是让学习者先了解并掌握函数参数的有关知识。

                                      相关知识

                                      我们在使用函数前,得先定义一个满足自己使用要求的函数。定义函数的基本结构是:

                                      1. def functionname( parameters ):
                                      2. "函数_文档字符串"
                                      3. function_suite
                                      4. return [expression]
                                      • 定义函数以def关键词开头,后面跟着函数名、圆括号()、括号中的参数、冒号;
                                      • 接着,在缩进块中编写函数体,函数的第一行语句一般是写文档字符串,用于存放函数说明,也可以选择不写;
                                      • Return[expression]表示结束函数,并返回值。而不带表达式的return相当于返回空值。

                                        本关的重点就是研究函数的参数parameters。定义函数的时候,参数的名字和位置定下来了,函数的接口定义也就完成了。我们在调用函数时,只用知道该传递什么样的参数,函数内部的运行情况已经被封装,使用者不必了解。

                                        Python 的函数参数主要包含以下几种:

                                        • 必选参数;
                                        • 默认参数;
                                        • 可变参数
                                        • 关键字参数。

                                          必选参数

                                          必选参数也叫位置参数,是函数中最常用的参数。必选参数就是在调用函数的时候必须指定参数值。例如:

                                          1. # 定义加法函数plus,参数a,b就是必选参数
                                          2. def plus(a,b):
                                          3. c=a+b
                                          4. return(c)
                                          5. # 调用函数plus时,必须给参数a,b传递值
                                          6. d=plus(1,2)
                                          7. # 输出结果d
                                          8. print(d)

                                          输出结果:

                                          1. 3

                                          如果调用plus函数时,传入的参数不符合要求,则会出现错误。例如:

                                          1. >>d = plus()
                                          2. TypeError: plus() missing 2 required positional arguments: 'a' and 'b'
                                          3. >>d = plus(1)
                                          4. TypeError: plus() missing 1 required positional argument: 'b'

                                          默认参数

                                          默认参数是指给函数参数提供默认值,如果在调用函数的时候没有给该参数传递值,则该参数使用默认值。例如:

                                          1. # 定义加法函数plus,参数a是必选参数,参数b是默认值2的参数
                                          2. def plus(a,b=2):
                                          3. c=a+b
                                          4. return(c)
                                          5. # 调用函数plus时,必须给参数a传递值,若不给b传递值,则b默认为2
                                          6. d=plus(1)
                                          7. # 输出结果d
                                          8. print(d)

                                          从上面的例子可以看出,在函数调用过程中可以不用给默认参数传递参数值。但在使用默认参数时,有两点需要注意:

                                          • 默认参数要放在所有必选参数的后面;
                                          • 默认参数必须指向不变对象。

                                            可变参数

                                            在有些情况下,我们在定义函数的时候,还不能确定函数应该包含多少个参数,这时我们可以使用可变参数,可变参数就是传入的参数数量是可变的。例如:

                                            1. # 定义plus函数,完成的功能是返回输入的整数之和。
                                            2. # 参数numbers是可变参数,表示输入的参数个数可以为任意值
                                            3. def plus(*numbers):
                                            4. add = 0
                                            5. for i in numbers:
                                            6. add += i
                                            7. return(add)
                                            8. # 调用3次plus函数,每次的参数个数都不相同
                                            9. d1 = plus(1,2,3)
                                            10. d2 = plus(1,2,3,4)
                                            11. d3 = plus(1,3,5,7,9)
                                            12. # 向函数中可以传递任意参数,包括0个参数
                                            13. d4 = plus()
                                            14. # 输出结果
                                            15. print(d1)
                                            16. print(d2)
                                            17. print(d3)
                                            18. print(d4)

                                            输出结果:

                                            1. 6
                                            2. 10
                                            3. 25
                                            4. 0

                                            在上面的例子中,numbers就是一个可变参数,可变参数前面加一个标识符*。在函数内部,可变参数numbers接收到的值是一个tuple。我们在调用参数是可变参数的函数时,可以给该函数传递任意个数的参数,包括0个参数。

                                            关键字参数

                                            可变参数允许我们在调用函数时传入任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许我们传入任意个含参数名的参数,这些关键字参数在函数调用时自动组装为一个dict。也就是说,关键字参数将长度任意的键-值对,作为参数传递给函数。例如:

                                            1. # 定义一个包含关键字参数的函数,返回值为参数值
                                            2. def plus(**kw):
                                            3. return kw
                                            4. # 调用plus函数,参数值为空
                                            5. d1 = plus()
                                            6. # 调用plus函数,参数值为x=1
                                            7. d2 = plus(x=1)
                                            8. # 调用plus函数,参数值为x=1,y=2
                                            9. d3 = plus(x=1, y=2)
                                            10. # 输出d1,d2,d3
                                            11. print(d1)
                                            12. print(d2)
                                            13. print(d3)

                                            输出结果:

                                            1. {}
                                            2. {'x': 1}
                                            3. {'x': 1, 'y': 2}

                                            在上面的例子中,kw就是一个关键字参数,关键字参数前面加**表示。关键字参数可以扩展函数功能,使传递参数过程更为简便。例如:

                                            1. # 定义一个plus函数,有3个参数,返回值是3个参数之和
                                            2. def plus(x,y,z):
                                            3. return x+y+z
                                            4. # 有一个dict列表,当中3个键的值分别为1,2,3
                                            5. dict = {'x':1, 'y':2, 'z':3}
                                            6. # 将dict列表中的3个值传入plus函数中,得到返回值d
                                            7. d = plus(dict['x'],dict['y'],dict['z'])
                                            8. # 输出d
                                            9. print(d)

                                            输出结果:

                                            1. 6

                                            但在上述例子中,将字典中的值向plus函数中传递参数的方法过于累赘,可以采取关键字参数的方法。例如:

                                            1. # 定义一个plus函数,有3个参数,返回值是3个参数之和
                                            2. def plus(x,y,z):
                                            3. return x+y+z
                                            4. # 有一个dict列表,当中3个键的值分别为1,2,3
                                            5. dict = {'x':1, 'y':2, 'z':3}
                                            6. # 用关键字参数的方法将dict列表中的3个值传入plus函数中,得到返回值d
                                            7. d = plus(**dict)
                                            8. # 输出d
                                            9. print(d)

                                            输出结果:

                                            1. 6

                                            使用关键字参数**dict的方法,可以大大提高参数传递的效率。

                                            参数组合

                                            我们在函数定义过程中,可以同时用到必选参数、默认参数、可变参数、关键字参数中的一种或几种。但是需要特别注意的是,这四种参数在使用的过程中是有顺序的,顺序依次应该是必选参数、默认参数、可变参数和关键字参数。例如:

                                            1. # 定义一个包含必选参数、默认参数、可变参数和关键字参数的函数plus
                                            2. def plus(x, y, z=0, *args, **kw):
                                            3. print('x=',x)
                                            4. print('y=',y)
                                            5. print('z=',z)
                                            6. print('args=',args)
                                            7. print('kw=',kw)
                                            8. # 调用函数plus,输入两个参数1,2
                                            9. plus(1,2)

                                            输出结果:

                                            1. x= 1
                                            2. y= 2
                                            3. z= 0
                                            4. args= ()
                                            5. kw= {}

                                            上面这个例子中,向plus函数中传入了两个必选参数1和2。必选参数必须得提供值,但是默认参数、可变参数和关键字参数可以不用提供值,我们还可以给默认参数、可变参数和关键字参数传递值。例如:

                                            1. # 定义一个包含必选参数、默认参数、可变参数和关键字参数的函数plus
                                            2. def plus(x, y, z=0, *args, **kw):
                                            3. print('x=',x)
                                            4. print('y=',y)
                                            5. print('z=',z)
                                            6. print('args=',args)
                                            7. print('kw=',kw)
                                            8. # 调用函数plus,输入参数x=1,y=2,z=3,args=(4,5,6),kw={}
                                            9. plus(1,2,3,4,5,6)
                                            10. print('\n')
                                            11. # 调用函数plus,输入参数x=1,y=2,z=3,args=(4,5,6),kw={'k':7, 'm':8}
                                            12. plus(1,2,3,4,5,6,k=7,m=8)

                                            输出结果:

                                            1. x= 1
                                            2. y= 2
                                            3. z= 3
                                            4. args= (4, 5, 6)
                                            5. kw= {}
                                            6. x= 1
                                            7. y= 2
                                            8. z= 3
                                            9. args= (4, 5, 6)
                                            10. kw= {'k': 7, 'm': 8}

                                            小结

                                            • 不同类型的参数是有顺序的,依次是必选参数、默认参数、可变参数和关键字参数;
                                            • 默认参数一定要用不可变对象,用可变对象容易产生逻辑错误;
                                            • *args表示的是可变参数,*args接收的是一个元组;
                                            • **kw表示的是关键字参数,**kw接收的是一个字典。

                                              编程要求

                                              本关的编程任务是补全src/Step1/plus.py文件的代码,实现相应的功能。具体要求如下:

                                              • 定义并调用一个函数,功能是对输入的列表中的数值元素进行累加,列表中元素的个数没有确定;
                                              • 将累加结果存储到变量d中;
                                              • 输出累加结果d。

                                                本关涉及的src/Step1/plus.py代码文件的代码框架如下:

                                                1. # coding=uft-8
                                                2. # 创建一个空列表numbers
                                                3. numbers = []
                                                4. # str用来存储输入的数字字符串,lst1是将输入的字符串用空格分割,存储为列表
                                                5. str = input()
                                                6. lst1 = str.split(' ')
                                                7. # 将输入的数字字符串转换为整型并赋值给numbers列表
                                                8. for i in range(len(lst1)):
                                                9. numbers.append(int(lst1.pop()))
                                                10. # 请在此添加代码,实现编程要求
                                                11. ########## Begin ##########
                                                12. ########## End ##########
                                                13. print(d)

                                                测试说明

                                                本关的测试文件是src/Step1/plus.py,测试过程如下:

                                                1. 平台自动编译生成plus.exe;
                                                2. 平台运行plus.exe,并以标准输入方式提供测试输入;
                                                3. 平台获取plus.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

                                                以下是平台对src/Step1/plus.py的样例测试集:

                                                测试输入:

                                                1. 1 2 3 4 5

                                                预期输出:

                                                1. 15

                                                测试输入:

                                                1. 1 3 5 7 9 11

                                                预期输出:

                                                1. 36

                                                测试输入:

                                                1. 2 4 6 8 10 12 14 16

                                                预期输出:

                                                1. 72

                                                开始你的任务吧,祝你成功!


                                                如果你觉得这一关的内容对你有帮助,请你在下面点赞。

                                                # coding=utf-8
                                                # 创建一个空列表numbers
                                                numbers = []
                                                # str用来存储输入的数字字符串,lst1是将输入的字符串用空格分割,存储为列表
                                                str = input()
                                                lst1 = str.split(' ')
                                                # 将输入的数字字符串转换为整型并赋值给numbers列表
                                                for i in range(len(lst1)):
                                                   numbers.append(int(lst1.pop()))
                                                # 请在此添加代码,对输入的列表中的数值元素进行累加求和
                                                ########## Begin ##########
                                                d=0
                                                for i in numbers:
                                                    d+=i
                                                
                                                ########## End ##########
                                                print(d)
                                                
                                                
                                                

                                                第2关:函数的返回值 - 求两个正整数的最大公约数 

                                                任务描述

                                                函数在进行运算处理后,返回的值被称为返回值。函数返回的值是通过return语句执行。返回值能够让我们直接得到函数处理的结果,而不必关心函数内部复杂繁重的运算过程,大大提高了编程效率。本关的主要目标是让学习者了解并掌握函数返回值的相关知识。

                                                相关知识

                                                return语句将值返回到调用函数的出口,函数中一定要有return返回值才是完整的函数。如果我们没有在函数中定义函数返回值,那么程序会自动让函数返回一个结果,该结果是None对象,而None对象表示没有任何值。

                                                将值作为返回值

                                                函数的返回值只有一个,但有时我们会发现有的函数好像有多个返回值,其实这里的“多个”并不是指多个返回值。比如函数返回一列表,里面包含很多个元素值。这就类似于,只能从超市带走一个箱子,但是允许我们把一些东西都装到箱子里面看做一个东西带走。例如:

                                                1. def f():
                                                2. return 1,'abc','1234'
                                                3. print(f())

                                                输出结果:

                                                1. (1, 'abc', '1234')

                                                调用f()函数,程序输出为一个元组,所以函数返回值表面上是3个值,其实是返回一个元组,元组里面有三个不同元素(元组语法上不需要一定带上圆括号)。

                                                将函数作为返回值

                                                我们除了可以将各种类型的值作为返回值外,也可以将函数作为返回值。例如,我们要定义一个函数来求列表中数值元素的和,一般情况下我们是这样定义的:

                                                1. def plus(*args):
                                                2. s = 0
                                                3. for n in args:
                                                4. s = s + n
                                                5. return s

                                                但是,如果我们不需要立刻求和,而是在后面的程序中,根据需求再计算,这种情况怎么办呢?这时我们定义的函数可以不返回求和的结果,而是返回计算求和的函数。所以我们还可以用如下方法定义函数:

                                                1. def lazy_plus(*args):
                                                2. def plus():
                                                3. s = 0
                                                4. for n in args:
                                                5. s = s + n
                                                6. return s
                                                7. return plus

                                                当我们调用lazy_plus()时,返回的并不是求和结果,而是计算求和的函数:

                                                1. # 定义求和函数,返回的并不是求和结果,而是计算求和的函数
                                                2. def lazy_plus(*args):
                                                3. def plus():
                                                4. s = 0
                                                5. for n in args:
                                                6. s = s + n
                                                7. return s
                                                8. return plus
                                                9. # 调用lazy_plus()时,返回的并不是求和结果,而是求和函数
                                                10. f = lazy_plus(1,2,3,4,5)
                                                11. print(f)

                                                输出结果:

                                                调用函数f时,才真正计算求和的结果:

                                                1. # 定义求和函数,返回的并不是求和结果,而是计算求和的函数
                                                2. def lazy_plus(*args):
                                                3. def plus():
                                                4. s = 0
                                                5. for n in args:
                                                6. s = s + n
                                                7. return s
                                                8. return plus
                                                9. # 调用函数f时,得到真正求和的结果
                                                10. f = lazy_plus(1,2,3,4,5)
                                                11. print(f())

                                                输出结果:

                                                1. 15

                                                在上述例子中,我们在函数lazy_plus中又定义了函数plus,而且内部函数plus是可以引用外部函数lazy_plus的参数和局部变量的。当函数lazy_plus返回函数plus时,相关参数和变量也将会保存在返回的函数中,这种方式也称为“闭包”(Closure)。

                                                小结

                                                我们除了可以将函数计算的值作为返回值外,也可以将函数作为返回值。

                                                如果您想了解更多函数结构的相关知识,请参考:【美】 Eric Matthes 著《 Python 编程——从入门到实践》第八章。

                                                编程要求

                                                本关的编程任务是补全src/step2/return.py文件的代码,实现相应的功能。具体要求如下:

                                                • 定义一个函数gcd,功能是求两个正整数的最大公约数;
                                                • 调用函数gcd,得到输入的两个正整数的最大公约数,并输出这个最大公约数。

                                                  本关涉及的代码文件src/step2/return.py的代码框架如下:

                                                  1. # coding=utf-8
                                                  2. # 输入两个正整数a,b
                                                  3. a = int(input())
                                                  4. b = int(input())
                                                  5. # 请在此添加代码,求两个正整数的最大公约数
                                                  6. ########## Begin ##########
                                                  7. ########## End ##########
                                                  8. # 调用函数,并输出最大公约数
                                                  9. print(gcd(a,b))

                                                  测试说明

                                                  本关的测试文件是src/step2/return.py,测试过程如下:

                                                  1. 平台自动编译生成return.exe;
                                                  2. 平台运行return.exe,并以标准输入方式提供测试输入;
                                                  3. 平台获取return.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

                                                  以下是平台对src/step2/return.py的样例测试集:

                                                  测试输入:

                                                  1. 1
                                                  2. 8

                                                  预期输出:

                                                  1. 1

                                                  测试输入:

                                                  1. 9
                                                  2. 3

                                                  预期输出:

                                                  1. 3

                                                  测试输入:

                                                  1. 9
                                                  2. 21

                                                  预期输出:

                                                  1. 3

                                                  测试输入:

                                                  1. 126
                                                  2. 36

                                                  预期输出:

                                                  1. 18

                                                  开始你的任务吧,祝你成功!


                                                  如果你觉得这一关的内容对你有帮助,请你在下面点赞。

                                                  # coding=utf-8
                                                  # 输入两个正整数a,b
                                                  a = int(input())
                                                  b = int(input())
                                                  # 请在此添加代码,求两个正整数的最大公约数
                                                  ########## Begin ##########
                                                  def gcd(a,b):
                                                      if a 3:
                                                • return _private_1(name)
                                                • else:
                                                • return _private_2(name)
                                                • 我们在上述程序块里公开了greeting()函数,greeting()函数需要使用_private_1()和_private_2()函数。学习者并不需要知道greeting()函数中的内部实现细节,所以我们可以将内部逻辑用private函数隐藏起来,这是一种十分常用的代码封装的方法。

                                                  小结

                                                  为了让程序的封装性更好,我们一般都限定函数的使用范围。一般我们把外部需要使用的函数定义为public函数,而把只在内部使用而外部不需要引用的函数定义成private函数。

                                                  编程要求

                                                  本关的编程任务是补全src/step3/scope.py文件的代码,实现相应的功能。具体要求如下:

                                                  • 编写程序,功能是求两个正整数的最小公倍数;
                                                  • 要求实现方法:先定义一个private函数 _gcd()求两个正整数的最大公约数,再定义public函数lcm()调用 _gcd()函数求两个正整数的最小公倍数;
                                                  • 调用函数lcm(),并将输入的两个正整数的最小公倍数输出。

                                                    本关涉及的代码文件src/step3/scope.py的代码框架如下:

                                                    1. # coding=utf-8
                                                    2. # 输入两个正整数a,b
                                                    3. a = int(input())
                                                    4. b = int(input())
                                                    5. # 请在此添加代码,求两个正整数的最小公倍数
                                                    6. ########## Begin ##########
                                                    7. ########## End ##########
                                                    8. # 调用函数,并输出a,b的最小公倍数
                                                    9. print(lcm(a,b))

                                                    测试说明

                                                    本关的测试文件是src/step3/scope.py,测试过程如下:

                                                    1. 平台自动编译生成scope.exe;
                                                    2. 平台运行scope.exe,并以标准输入方式提供测试输入;
                                                    3. 平台获取scope.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

                                                    以下是平台对src/step3/scope.py的样例测试集:

                                                    测试输入:

                                                    1. 5
                                                    2. 6

                                                    预期输出:

                                                    1. 30

                                                    测试输入:

                                                    1. 8
                                                    2. 10

                                                    预期输出:

                                                    1. 40

                                                    测试输入:

                                                    1. 16
                                                    2. 24

                                                    预期输出:

                                                    1. 48

                                                    测试输入:

                                                    1. 132
                                                    2. 214

                                                    预期输出:

                                                    1. 14124

                                                    开始你的任务吧,祝你成功!

                                                    # coding=utf-8
                                                    # 输入两个正整数a,b
                                                    a = int(input())
                                                    b = int(input())
                                                    # 请在此添加代码,求两个正整数的最小公倍数
                                                    ########## Begin ##########
                                                    c=a*b
                                                    def lcm(a,b):
                                                        if a b
                                                  • c -> b
                                                  • a -> c
                                                  • b -> a
                                                  • b -> c
                                                  • a -> c
                                                  • 程序分析:

                                                            首先我们定义了一个函数move(n,a,b,c),参数n代表a柱上的圆盘个数,a,b,c三个柱子的顺序代表要将a柱上的圆盘最终移动到c柱上,然后b柱作为中间柱。

                                                    我们在递归函数中肯定会有终止递归的条件。第2到4行的代码就是表示,当a柱上的圆盘个数为1时,就中止递归并返回。因为此时a柱上面只有一个圆盘,肯定就是直接把圆盘从a柱移动到c柱了。

                                                    第5行的代码move(n-1, a, c, b)表示,先得把a柱上的n-1个圆盘从a柱移动到b柱,这时c柱是中间辅助柱。第6行的代码move(1, a, b, c)表示,当条件n=1的时候,把a柱上剩下的1个最大圆盘从a柱移动到c柱。

                                                    第7行的代码move(n-1, b, a, c)表示,现在n-1个圆盘已经转移到b柱上了,还是递归调用move函数,将n-1个圆盘从b柱移动到c柱,这时a柱是中间辅助柱。

                                                    最后我们调用move函数将3个圆盘从a柱移动到到c柱。当移动64个圆盘时,只需要将调用函数move(n,a,b,c)中的n变为64即可。这个计算量是十分巨大的,也只能交给计算机去解决。

                                                    小结

                                                            我们通过汉诺塔的例子感受了递归函数的基本思路,并尝试解决了一个具体问题。递归函数的优点是定义清晰、思路简洁,能够极大简化编程过程。理论上,所有的递归函数都可以用循环的方法代替,但循环方法的编程过程要比递归函数复杂很多。

                                                    编程要求

                                                    本关的编程任务是补全src/step1/recursive.py文件的代码,实现相应的功能。具体要求如下:

                                                    • 定义一个函数fact(n),实现的功能是对输入的正整数n进行n!运算;
                                                    • 调用函数fact(n),对输入的正整数n进行阶乘运算,并输出计算结果。

                                                      本关涉及的代码文件src/step1/recursive.py的代码框架如下:

                                                      1. # coding=utf-8
                                                      2. # 输入正整数n
                                                      3. n = int(input())
                                                      4. # 请在此添加代码,对输入的正整数n进行阶乘运算,并输出计算结果。
                                                      5. ########## Begin ##########
                                                      6. ########## End ##########

                                                      测试说明

                                                      本关的测试文件是src/step1/recursive.py,测试过程如下:

                                                      1. 平台自动编译生成recursive.exe;
                                                      2. 平台运行recursive.exe,并以标准输入方式提供测试输入;
                                                      3. 平台获取recursive.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

                                                      以下是平台对src/step1/recursive.py的样例测试集:

                                                      测试输入:

                                                      1. 5

                                                      预期输出: 120

                                                      测试输入:

                                                      1. 6

                                                      预期输出:

                                                      1. 720

                                                      测试输入:

                                                      1. 7

                                                      预期输出:

                                                      1. 5040

                                                      测试输入:

                                                      1. 8

                                                      预期输出:

                                                      1. 40320

                                                      开始你的任务吧,祝你成功!

                                                      # coding=utf-8
                                                      # 输入正整数n
                                                      n = int(input())
                                                      # 请在此添加代码,对输入的正整数n进行阶乘运算,并输出计算结果。
                                                      ########## Begin ##########
                                                      def fact(n):
                                                          if n ==0:
                                                              return 1
                                                          else:
                                                              return n*fact(n-1)
                                                      print(fact(n))
                                                      ########## End ##########
                                                      

                                                       七、分支和循环结构

                                                      第1关:英寸与厘米互换

                                                      任务描述

                                                      本关任务:编写一个能实现单位英寸与公制单位厘米的程序。

                                                      相关知识

                                                      为了完成本关任务,你需要掌握:1.if条件语句。

                                                      编程要求

                                                      根据提示,在右侧编辑器补充代码,实现单位英寸与公制单位厘米互换。 (1英寸 = 2.54厘米) 注:函数有两个参数,一个value值(代表长度),一个单位(in(英寸)或cm(厘米)),如单位是cm则直接输出单位为英寸的长度,如单位是in则直接输出单位为厘米的长度,如果单位不是cm或in,则输出‘请输入有效的单位’。结果保留两位小数。(本函数不需返回值)

                                                      测试说明

                                                      平台会对你编写的代码进行测试:

                                                      测试输入:3,cm; 预期输出:1.18英寸

                                                      测试输入:3,厘米; 预期输出:1.18英寸

                                                      测试输入:5,in; 预期输出:12.70厘米

                                                      测试输入:5,英寸; 预期输出:12.70厘米

                                                      测试输入:5,tt; 预期输出:请输入有效的单位


                                                      开始你的任务吧,祝你成功!

                                                      """
                                                      英制单位英寸和公制单位厘米互换
                                                      """
                                                      value = input()
                                                      value = int(value)
                                                      unit = input()
                                                      #        请在此处添加代码       #
                                                      # *************begin************#
                                                      if unit in ["in"] or unit in ["英寸"]:
                                                          a=value*2.54
                                                          print("{:.2f}厘米".format(a))
                                                      elif unit in ["cm","厘米"]:
                                                          b=value/2.54
                                                          print("{:.2f}英寸".format(b))
                                                      else:
                                                          print("请输入有效的单位")
                                                      # **************end*************#
                                                      

                                                       第2关:百分制转换为等级制成绩

                                                      任务描述

                                                      本关任务:编写一个能将百分制成绩转换为等级制成绩的程序。

                                                      相关知识

                                                      为了完成本关任务,你需要掌握: 1.if条件语句。

                                                      编程要求

                                                      根据提示,在右侧编辑器补充代码,将百分制成绩转换为等级制成绩。 (90

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon