文章目录

  • Python编程技术作业-1
  • 判断
  • 单选
  • 填空
  • 编程题
  • 7-1 人生苦短,我学python
  • 7-2 输出python之禅
  • 7-3 jmu-python-汇率兑换
  • 7-4 jmu-python-求圆面积
  • Python编程技术作业-2
  • 单选
  • fn函数题
  • 6-1 python函数:求m到n之和
  • 6-2 python函数:递归求Fabonacci数列
  • 编程题
  • 7-1 企业根据利润提成发放奖金问题
  • 7-2 计算某天距元旦的天数
  • 7-3 温度转换
  • 7-4 3,5,7的倍数判定(高教社,《Python编程基础及应用》习题6-4)
  • 7-5 计算分段函数f(x)的值
  • 7-6 统计字符串中不同种类的字符个数
  • Python编程技术作业-3
  • 单选
  • 编程题
  • 7-1 输出不重复的字符
  • 7-2 找列表中最大元素的下标(高教社,《Python编程基础及应用》习题4-7
  • 7-3 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8)
  • 7-4 统计字符串列表中每个字母出现的次数(高教社,《Python编程基础及应用》习题6-8)
  • 7-5 jmu-python-异常-学生成绩处理中级版
  • 7-6 下标异常
  • 7-7 往返跑方阵
  • Python编程技术作业-4
  • 单选
  • 填空
  • Python编程技术实验-1(编程基础)
  • 7-5 输入半径(大于0),计算圆面积
  • 7-6 按格式输出日期
  • 7-7 华氏温度到摄氏温度的转换(高教社,《Python编程基础及应用》习题3-9)
  • 7-8 比较大小
  • 7-9 统计字符串中子串出现的次数
  • Python编程技术实验-2(程序结构)
  • 7-1 判断点在圆内或圆外
  • 7-2 身体质量指数(高教社,《Python编程基础及应用》习题6-3)
  • 7-3 本题要求两个给定正整数的最大公约数和最小公倍数。
  • 7-4 X教授决策成绩评定
  • 7-5 统计输入字符个数
  • 7-6 判断是否为3和5的倍数
  • 7-7 天天向上的力量
  • 7-9 三七二十一
  • 7-10 亲和数判断
  • Python编程技术实验-3(复合数据类型)
  • 7-1 求整数的位数及各位数字之和
  • 7-2 Python-任意多行字符串拆分数值求和
  • 7-3 数据提取
  • 7-4 汉字表示的大写数字金额
  • 7-5 sdut-字母替换
  • 7-6 sdut-查验身份证
  • 7-7 sdut-字典合并
  • 7-8 单词统计
  • 7-9 集合A-B
  • 7-10 奇特的四位数
  • Python编程技术实验-4(函数和类)
  • 6-1 列表推导生成随机数矩阵(高教社,《Python编程基础及应用》习题4-10)
  • 6-2 整数数位和(高教社,《Python编程基础及应用》习题8-3)
  • 6-3 编写函数计算一个或不特定多个数的乘积(高教社,《Python编程基础及应用》习题8-6)
  • 6-4 编写生成斐波那契数列的函数并调用。(升级版v2.0)
  • 6-5 判断素数的函数
  • 6-6 定义并实现身体质量指数类(高教社,《Python编程基础及应用》习题9-3)
  • 6-7 编写Pet类
  • 6-8 编写一个Fan类

  • Python编程技术作业-1

    判断

    1-1 使用驼峰式命名法给变量命名时,变量名以小写字母开头,并且从第二个单词开始,每个单词的首字母必须大写。T

    1-2 Python中标识符区分大小写。T

    1-3 无论使用单引号或双引号包含字符,使用print输出的结果都一样。T
    1-4 无论input接收任何的数据,都会以字符串的方式进行保存。T

    1-5 格式化输出浮点数。语句

    print(“{:.3f}”.format(area)) 的作用是输出变量area的值,小数点后保留3位。T

    1-6 输入整数的做法

    语句

    a = int(input())

    首先执行input函数调用,返回字符串,然后执行int函数调用,把数字字符串转换为整数,最后执行赋值操作,把整数赋值给变量a。T

    1-7 print ()不可以用于同时输出多个变量值。F

    1-8 strip()函数可以删除字符串头尾指定的字符。T

    1-9 Python中,转义字符以“\”开头。T

    1-9Python程序中的变量需要进行类型声明。 F

    单选

    2-1下列选项中,不属于Python语言特点的是:C

    A.

    简单易学

    B.

    开源

    C.

    面向过程

    D.

    可移植性

    2-2 print(“120”+“56”)的输出结果是:( C)。

    A.
    176

    B.
    有错误

    C.
    12056

    D.
    120 56

    2-3 下列程序执行后输出结果为(abc )。

    x = "abc"
    y = x
    y = 100
    print(x)
    

    2-4 调用split方法

    假设line的值是字符串"2 34 8",执行以下语句后,

     a, b, c=line.split()
    

    以下说法正确的是:B

    A.

    a的值是2

    B.

    b的值是"34"

    C.

    c的值是4

    D.

    a, b, c的值分别是2, 34, 8

    Python3 split() 方法 | 菜鸟教程 (runoob.com)

    2-5

    输入提示的作用

    语句:

    line=input("输入两个整数:")
    

    的执行步骤不包含:C

    A.

    在屏幕输出"输入两个整数:";

    B.

    input函数返回字符串;

    C.

    把"输入两个整数:"这个字符串赋值给line变量

    D.

    从键盘输入的字符串赋值给line变量。

    2-6 想要得到输出结果为”张三的身高是180cm,体重是60kg“,则代码应为(C )

    A.

    student = ['张三', 18, '男', 180, 60]
    print(student[0]+"的身高是"+student[3]+"cm,体重是"+student[4]+"kg")
    

    B.

    student = ['张三', 18, '男', 180, 60]
    print("{}的身高是{}cm,体重是{}kg".format(student[1],student[4],student[5]))
    

    C.

    student = ['张三', 18, '男', 180, 60]
    print("{}的身高是{}cm,体重是{}kg".format(student[0],student[3],student[4]))
    

    结果:张三的身高是180cm,体重是60kg

    D.

    student = ['张三', 18, '男', 180, 60]
    print(student[0],"的身高是",student[3],"cm,体重是",student[4],"kg")
    

    结果:张三 的身高是 180 cm,体重是 60 kg,输出结果中间带空格

    2-7 以下,哪个是正确的python变量名C

    A.

    1a

    B.

    for

    C.

    FOR

    D.

    a#

    **2-8 关于Python中的复数,下列说法错误的是。**C

    A.

    表示复数的语法是real+imagej

    B.

    实部和虚部都是浮点数

    C.

    虚部必须后缀j,且必须是小写

    D.

    complex(x)会返回以x为实部,虚部为0的复数


    2-9 Python不支持的数据类型有 A

    A.

    char

    B.

    int

    C.

    float

    D.

    list


    2-10 字符串’Hi,Andy’中,字符’A’对应的下标位置为( C)。

    A.

    1

    B.

    2

    C.

    3

    D.

    4

    填空

    4-1 布尔类型的值包括True和(False)。


    4-2 已知 a=3; b=5; c=6; d=True, 则表达式 not d or a>=0 and a+c>b+3的值是(True)。


    4-3 在python中,22.5//2的结果为(11.0)


    4-4 表达式2**3*5%3的值是(1)


    4-5 在Python中,56/5的结果为(11.2)


    4-6 下面语句的输出结果是什么?helloworld

    print("hello"  'world')     #hello与world间隔两个空格
    

    4-7( 变量)是代表存储在计算机内存中的某个数值的名字。


    4-8 input()函数会将接收的数据以(字符串)类型返回。(提示:填写的是某种数据类型)


    4-9 Python3.X默认使用的编码是(utf-8)。


    4-10 python中,使用(#)号表示单行注释。

    编程题

    7-1 人生苦短,我学python

    输入一个人名,按照要求给出回应。

    输入格式:
    输入一个两个字或三个字的姓名,如 :张丹枫

    输出格式:
    第一行输出:张丹枫同学,人生苦短,我学python

    第二行输出: 张大侠,学好python,走遍天下也不怕

    第三行输出: 丹枫小盆友,学好python,你最帅

    输入样例:
    在这里给出一组输入。例如:

    郭靖
    输出样例:
    在这里给出相应的输出。例如:

    郭靖同学,人生苦短,我学python
    郭大侠,学好python,走遍天下也不怕
    靖小盆友,学好python,你最帅

    name = input()
    if len(name)==2:
        print("{}同学,人生苦短,我学python".format(name))
        print("{}大侠,学好python,走遍天下也不怕".format(name[0]))
        print("{}小盆友,学好python,你最帅".format(name[1]))
    elif len(name)==3:
        print("{}同学,人生苦短,我学python".format(name))
        print("{}大侠,学好python,走遍天下也不怕".format(name[0]))
        print("{}小盆友,学好python,你最帅".format(name[1:3]))
    

    Python 字符串 | 菜鸟教程 (runoob.com)

    Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。

    Python 访问子字符串,可以使用方括号来截取字符串,栗子:

    var1 = 'Hello World!'
    var2 = "Python Runoob"
     
    print "var1[0]: ", var1[0]
    print "var2[1:5]: ", var2[1:5]
    #var1[0]:  H
    #var2[1:5]:  ytho
    

    Python format 格式化函数 | 菜鸟教程 (runoob.com)

    7-2 输出python之禅

    使用import this 语句来欣赏一下Tim Peters 的 The Zen of Python(python之禅)吧。

    import this
    
    7-3 jmu-python-汇率兑换

    按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序

    输入格式:
    输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100

    输出格式:
    输出经过汇率计算的美元或人民币的金额,格式与输入一样,币种在前,金额在后,结果保留两位小数

    输入样例1:
    R60
    输出样例1:
    $10.00
    输入样例2:
    $5
    输出样例2:
    R30.00

    m = input()
    if m[0] == "R":
        U = eval(m[1:]) / 6
        print("${:.2f}".format(U))
    elif m[0] == "$":
        R = eval(m[1:]) * 6
        print("R{:.2f}".format(R))
    

    Python eval() 函数 | 菜鸟教程 (runoob.com)

    栗子:

    >>>x = 7
    >>> eval( '3 * x' )
    21
    >>> eval('pow(2,2)')
    4
    >>> eval('2 + 2')
    4
    >>> n=81
    >>> eval("n + 4")
    85
    
    7-4 jmu-python-求圆面积

    输入一个数值表示圆的半径,求相应圆的面积。圆周率要求使用math库中的pi常量。

    输入格式:
    输入数值型数据,例如:1.5

    输出格式:
    输出圆面积,要求小数点后保留两位,例如:7.07

    输入样例:
    在这里给出一组输入。例如:

    1.5
    输出样例:
    在这里给出相应的输出。例如:

    7.07

    import math
    r=float(input())
    area=(math.pi)*r*r
    #print(area)
    #保留小数点后两位
    print('{:.2f}'.format(area))
    

    Python编程技术作业-2

    单选

    2-1 执行下列Python语句将产生的结果是( C)。

    x=2

    y=2.0

    if(x==y): print(“Equal”)

    else: print(“No Equal”)

    A.

    编译错误

    B.

    运行时错误

    C.

    Equal

    D.

    Not Equal


    2-2 python语言对嵌套if语句的规定是:else总是与C

    A.

    第一个if配对

    B.

    其之前最近的if配对

    C.

    缩进位置相同的if配对

    D.

    其之前最近且尚未配对的if配对


    2-3 Python过程化程序设计的三种基本程序控制结构是(A ) 。

    A.

    顺序结构、选择结构、循环结构

    B.

    输入、处理、输出

    C.

    for、while、if

    D.

    复合语句、基本语句、空语句


    2-4M以下哪个关键字(A )是用于给 if-else分支语句添加多个条件的?

    A.

    elif

    B.

    else

    C.

    else if

    D.

    elseif


    2-5

  • score = int(input(“请输入分数”))
  • if score > 60:
  • print(“你考试及格了”)
  • print(“你的考试不及格”)
  • 希望通过此程序判断是否及格。以下描述错误的是:A

    A.

    无论输入什么分数,输出结果都是
    ”你考试及格了“
    ”你的考试不及格“

    B.

    如果希望达到程序效果,需要在if语句后,第3行代码需要缩进4个空格

    C.

    此程序输入分数后,能正常判断并输出此人是否考试及格。

    D.

    if判断后,无论是TRUE或FALSE,都没有子语句块需要执行,程序直接执行下一行。这个属于逻辑错误。


    2-6 选出对下列语句不符合语法要求的表达式:

    for var in B 😕/因为集合无序,不能通过索引获取

    print var
    

    A.

    (1,2,3)

    B.

    {1,2,3,4,5}

    C.

    “Hello”

    D.

    range(0,10)


    2-7 下列for循环执行后,输出结果的最后一行是B

    for i in range(1,3):

    for j in range(2,5):

          print(i*j)
    

    A.

    6

    B.

    8

    C.

    15

    D.

    2


    2-8 下面程序中语句print(i*j)共执行了_________A__________次。5*3

    for i in  range(5):
           for j in range(2,5):
                 print(i*j)
    

    A.

    15

    B.

    14

    C.

    20

    D.

    12


    2-9 Python 中,for 和 while 可以有 else 语句?C

    A.

    只有 for 才有 else 语句。

    B.

    只有 while 才有 else 语句。

    C.

    for 和 while 都可以有 else 语句。

    D.

    for 和 while 都没有 else 语句。


    2-10 求比10小且大于等于0的偶数,下列程序中空格处应填入(B)

    x = 10
    while x:
        x = x-1
        if x%2!=0:
            ________   
        print (x)
    

    A.

    break

    B.

    continue

    C.

    pass

    D.

    False


    fn函数题

    6-1 python函数:求m到n之和

    本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。

    函数接口定义:
    函数接口:
    sum(m,n)
    m<n,m和n可以是负数

    裁判测试程序样例:

    /* 请在这里填写答案 */
    在这里给出函数被调用进行测试的例子。例如:
    m=int(input())
    n=int(input())
    print(sum(m,n))
    输入样例:
    在这里给出一组输入。例如:

    -1
    5
    输出样例:
    在这里给出相应的输出。例如:

    14

    def sum(m,n):
        result=0
        if m<n:
            for i in range(m,n+1):
                result+=i
            return result
        else:
            return "输入有误!"
    
    6-2 python函数:递归求Fabonacci数列

    本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

    f(n)=f(n−2)+f(n−1) (n≥3),其中f(1)=1,f(2)=1。

    函数接口定义:
    函数接口:
    f(n)
    函数f应返回第n个Fabonacci数。题目保证输入输出在整型范围内。建议用递归实现。

    裁判测试程序样例:
    /* 请在这里填写答案 */

    在这里给出函数被调用进行测试的例子。例如:
    n=int(input())
    print(f(n))
    输入样例:
    在这里给出一组输入。例如:

    6
    输出样例:
    在这里给出相应的输出。例如:

    8

    def f(n):
        if n==1 or n==2:
            return 1
        else:
            return f(n-1)+f(n-2)
    

    编程题

    Python pass 是空语句,是为了保持程序结构的完整性。

    pass 不做任何事情,一般用做占位语句。

    7-1 企业根据利润提成发放奖金问题

    企业根据利润提成发放奖金问题。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%; 高于100万元时,超过100万元的部分按1%提成。从键盘输入当月利润,求应发放奖金总数?

    输入格式:
    输入一个利润整数。例如:输入120000。

    输出格式:
    输出一个实数。例如:11500.0。

    输入样例:
    在这里给出一组输入。例如:

    120000

    profit = float(input())
    bonus = 0
    if  0< profit <= 100000:
        bonus = profit * 0.1
    elif 100000 < profit <= 200000:
        bonus = 100000 * 0.1 + (profit - 100000) * 0.075
    elif 200000 < profit <= 400000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05
    elif 400000 < profit <= 600000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03
    elif 600000 < profit <= 1000000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015
    elif profit > 1000000:
        bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01
    else:
        pass
    
    print(bonus)
    
    7-2 计算某天距元旦的天数

    输入年、月、日,要求输出该年份的元旦到该日期总共经过了多少天。(提示:闰年是指能被400 整除的年份或者能被4 整除但不能100 整除的年份)

    输入格式:
    输入n,代表接下来要输入n行的年、月、日。

    然后输入n行年、月、日,年、月、日之间的元素以空格相分隔,第1个数据为年,第2个数据为月,第3个数据为日。

    输出格式:
    如果输入年月日正确,则输出:Totaldays=天数

    如果输入年月日有错,则输出:ErrorInput

    输入样例:
    4
    2000 13 10
    2000 3 10
    2012 3 10
    2018 5 20
    输出样例:
    在这里给出相应的输出。例如:

    ErrorInput
    Totaldays = 70
    Totaldays = 70
    Totaldays = 140

    from datetime import datetime
    n = int(input())
    for i in range(n):
        s = input()
        try:
            y, m, d = s.split(' ', 2)
            y = int(y)          
            m = int(m)
            d = int(d)
            d2 = datetime(y, m, d)
        except:
            print('ErrorInput')
            continue
        d1 = datetime(y, 1, 1)
        print('Totaldays =',(d2 - d1).days + 1)
    
    7-3 温度转换

    温度刻画存在不同体系,摄氏度以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画。华氏度以1标准大气压下水的结冰点为32度,沸点为212度,将温度进行等分刻画。

    根据华氏和摄氏温度定义,转换公式如下:

    C = ( F – 32 ) / 1.8
    F = C * 1.8 + 32

    输入格式:
    输入一个实数表示温度,后面的字母表示温度体系:F或f表示华氏温度,而C或c表示摄氏温度,实数与字母间无分隔符。

    输出格式:
    输出转换后的温度(保留两位小数,且后面有温度体系说明符,大写字母表示);若输入的数据格式有误(未有效标示温度体系),输出Error

    输入样例:
    在这里给出一组输入。例如:

    36.8C
    输出样例:
    在这里给出相应的输出。例如:

    98.24F
    输入样例:
    在这里给出一组输入。例如:

    10f
    输出样例:
    在这里给出相应的输出。例如:

    -12.22C
    输入样例:
    在这里给出一组输入。例如:

    78.2#
    输出样例:
    在这里给出相应的输出。例如:

    Error

    TempStr = input() 
    if TempStr[-1] in ['F', 'f']: 
     C = (eval(TempStr[0:-1]) - 32)/1.8 
     print("{:.2f}C".format(C)) 
    elif TempStr[-1] in ['C', 'c']: 
     F = 1.8*eval(TempStr[0:-1]) + 32 
     print("{:.2f}F".format(F)) 
    else: 
     print("Error")
    
    7-4 3,5,7的倍数判定(高教社,《Python编程基础及应用》习题6-4)

    编程序实现功能:输入一个整数,判断其是否能同时被3、5、7整除。能被整除则输出“Yes”,否则, 输出“No”。

    输入格式:
    一个整数

    输出格式:
    Yes 或 No

    输入样例:
    7
    输出样例:
    No

    a = int(input())
    
    if(a%3==0 and a%5==0 and a%7==0):
        print("Yes")
    else:
        print("No")
    
    7-5 计算分段函数f(x)的值

    计算下列分段函数f(x)的值:

    1103.jpg

    输入格式:
    输入在一行中给出实数x。

    输出格式:
    在一行中按“f(x)=result”的格式输出,其中result都保留三位小数(提示:使用.format()函数)。

    输入样例1:
    12.34
    输出样例1:
    f(12.34)=0.081
    输入样例2:
    0
    输出样例2:
    f(0.0)=0.000

    x = float(input())
    if (x != 0):
        y = 1/x
    else:
        y = 0
    
    print("f(",end='')
    print(x,end='')
    print(")=",end='')
    print("{0:.3f}".format(y))
    
    7-6 统计字符串中不同种类的字符个数

    本题目要求读入一个字符串,统计字符串中字母、数字、空格、其它字符的个数。

    输入格式:
    输入一行由任意字符组成的字符串。

    输出格式:
    统计字符串中字母、数字、空格、其它字符的个数。

    输入样例:
    在这里给出一组输入。例如:

    2a and Am3,MNak888!..
    输出样例:
    在这里给出相应的输出。例如:

    letters=10,digits=5,spaces=2,others=4

    n=input()
    a=b=c=d=0
    for i in n:
        if ord('a')<=ord(i)<=ord('z') or ord('A')<=ord(i)<=ord('Z'):
            a=a+1
        elif ord('0')<=ord(i)<=ord('9'):
            b=b+1
        elif ord(i)==ord(' '):
            c=c+1
        else:
            d=d+1
    print("letters={},digits={},spaces={},others={}".format(a,b,c,d))
    

    Python编程技术作业-3

    集合(set)是一个无序的不重复元素序列。

    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    Python3 集合 | 菜鸟教程 (runoob.com)

    单选

    2-1 Python中,列表推导式在逻辑上等价于( B)。

    A.

    条件语句

    B.

    循环语句

    C.

    判断语句

    D.

    嵌套语句

    Python 推导式 | 菜鸟教程 (runoob.com)


    2-2 a=[2,3,4,1,6,9,8],执⾏b = [index for index, value in enumerate(a) if value > 3]`后,b=( D)。//(输出值大于3的索引值)

    A.

    [(2,4),(4,6),(5,9),(6,8)]

    B.

    [3,5,6,7]

    C.

    [4,6,9,8]

    D.

    [2,4,5,6]


    2-3 下列哪些类型的数据可以作为字典中元素的“键”(B )。

    A.

    列表

    B.

    整数

    C.

    集合

    D.

    字典


    2-4 以下对列表a = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]操作不正确的是:D

    A.

    a[len(a)-1]

    B.

    a[-1]

    C.

    a[-5]

    D.

    a[5]//越界

    负数表示反向读取第几个元素


    2-5 下列函数中,用于返回元组中元素最小值的是(D )。

    A.

    len

    B.

    max

    C.

    tuple

    D.

    min


    2-6( C)是轻量级的列表,也可以说是:常量列表。

    A.

    字典

    B.

    集合

    C.

    元组

    D.

    列表


    2-7 以下不是tuple类型的是( A).

    A.

    (1)

    B.

    (1,)

    C.

    ([], [1])

    D.

    ([{‘a’: 1}], [‘b’, 1])


    2-8 现有一元组:

    x = (1, 2, 3, 4)

    以下对元组操作正确的是(A )。

    A.

    y = x[0]

    B.

    y = x(0)

    C.

    x[0] = 0

    D.

    x(0) = 0

    Python 元组 | 菜鸟教程 (runoob.com)


    2-9 给定字典d,以下选项中对d.keys()的描述正确的是 (C )

    A.

    返回一个列表类型,包括字典d中所有键

    B.

    返回一个集合类型,包括字典d中所有键

    C.

    返回一种dict_keys类型,包括字典d中所有键

    D.

    返回一个元组类型,包括字典d中所有键

    Python3 字典 | 菜鸟教程 (runoob.com)


    2-10 给定字典d, 以下选项中对d.items()的描述正确的是 ( A)

    A.

    返回一种dict_items类型,包括字典d中所有键值对

    B.

    返回一个元组类型,每个元素是一个二元元组,包括字典d中所有键值对

    C.

    返回一个列表类型,每个元素是一个二元元组,包括字典d中所有键值对

    D.

    返回一个集合类型,每个元素是一个二元元组,包括字典d中所有键值对

    Python3 字典 | 菜鸟教程 (runoob.com)


    2-11 可以使用__B__运算符来确定一个键是否在字典中。

    A.

    &

    B.

    in

    C.

    ^替换为正确项

    D.

    ?


    2-12

    使用( B)运算符来确定一个键是否在字典中。

    A.

    &

    B.

    in

    C.

    ^

    D.

    ?


    2-13 下列关于字典的特点,错误的是(B )。

    A.

    值可以是任意类型的python对象

    B.

    属于python中的不可变数据类型

    C.

    字典元素用花括号{ }包裹

    D.

    由键值(key-value)对构成


    2-14 使用语句D = dict([(‘a’, ‘b’),(‘c’, ‘d’)]) 创建的字典为(B )。

    A.

    {a: b, c: d}

    B.

    {‘a’: ‘b’, ‘c’: ‘d’}

    C.

    {(‘a’: ‘b’) 😦 ‘c’: ‘d’)}

    D.

    {‘a’: ‘c’, ‘b’: ‘d’}


    2-15 以下代码的执行结果是(C ) 。

    a={i for i in range(1,10)}
    b={i for i in range(12) if i%2==1 }
    print(a&b)
    

    A.

    {2, 4, 6, 8, 11}

    B.

    {1, 2, 3, 4, 5, 6, 7, 8, 9, 11}

    C.

    {1, 3, 5, 7, 9}

    D.

    {2, 4, 6, 8}


    2-16 对于两个集合s1和s2,s1 < s2的意思是?C

    A.

    s1的大小小于s2的大小

    B.

    s1的元素比s2的小

    C.

    s1是s2的真子集

    D.

    s2是s1的真子集


    2-17 返回集合中元素个数的函数是___B___。

    A.

    size()

    B.

    len()

    C.

    elements()

    D.

    count()


    2-18 集合set属于Python的(C )。

    A.

    有序可变序列

    B.

    有序不可变序列

    C.

    无序可变序列

    D.

    无序不可变序列


    2-19 已知:s=set(‘abcd’),向集合对象s中增加新元素,不可以采用哪些形式(D )。

    A.

    s.add(‘ef’)

    B.

    s.update(‘gh’)

    C.

    s=s|set(‘123’)

    D.

    s=s and set(‘123’)


    2-20 不可以用下标的方式访问对象中元素的值的是(C)。

    A.

    列表

    B.

    元组

    C.

    集合

    D.

    字符串

    编程题
    7-1 输出不重复的字符

    输入一个字符串,把最左边的10个不重复的字符(大小写算不同字符)挑选出来。 如不重复的字符不到10个,则按实际数目输出。

    输入格式:
    输入一个字符串s。

    输出格式:
    输出一个字符串,包含字符串s最左边10个不重复的字符。不到10个按实际输出。

    输入样例1:
    在这里给出一组输入。例如:

    Hello world, hello python
    输出样例1:
    在这里给出相应的输出。例如:

    Helo wrd,h
    输入样例2:
    在这里给出一组输入。例如:

    succeed
    输出样例2:
    在这里给出相应的输出。例如:

    suced

    a=input()
    s = ""
    for i in a:
        if i not in s:
            if(len(s)<10):
                   s+=i
    print(s)
    
    
    7-2 找列表中最大元素的下标(高教社,《Python编程基础及应用》习题4-7

    输入一个整数列表,找出整数列表中最大元素的下标,如果最大元素的个数超过1,那么请打印输出所有的下标。

    输入格式:
    数字1,数字2,数字3,…,数字n

    输出格式:
    下标1
    下标2

    下标k

    输入样例:
    3,2,3
    输出样例:
    0
    2

    a = input("")
    if a=="":
        print()
    else:
        li = a.split(",")
        if len(li)==1:
            print(0)
        else:
            li2 = []
            for i in li:
                li2.append(int(i))
            li2.sort()
            maxInt = li2[len(li2)-1]
            for i in range(0,len(li)):
                if int(li[i]) == maxInt:
                    print(i)
    
    
    7-3 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8)

    输入一个列表,删除其中的重复值,再输出。

    要求
    假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。
    不同元素在列表中的相对位置不应被改变。

    输入格式:
    [元素1, 元素2, … , 元素n]

    输出格式:
    [元素1,元素2, … , 元素k]

    输入样例:
    [4,3,2,3,2,4,True]
    输出样例:
    [3, 2, 4, True]
    提示:将形如"[1,3,5]"的字符串转换成列表可以使用eval()函数。

    注意:不要在遍历列表的同时对列表进行增删改操作,这样会引起混乱,导致不正确的结果!

    注意,输出格式应与输出样例一致,涉及空格,逗号等。

    请接着往下看:你的程序真的对了吗?
    多数读者的解题思路是制造一个v列表的复制品以避免在遍历v的同时删除v中的元素。该解决方案可以通过本题设置的全部测试。但这并不意味着该解决方案是“完全正确”的。请尝试下述输入:

    [1,7,6,7,7,True,‘a’,9.8,‘a’,True]

    很遗憾,程序将产生错误的输出:
    [6, 7, 9.8, ‘a’, True]
    产生这种意外结果的原因是:在Python里1和True是相等的! 0和False也是相等的! 在使用列表的count()函数,index()函数,remove()函数时,1和True, 0和False被不加区分地对待。

    下述代码的执行结果证实了这一点:

    v = [1,True,2,True,0,False]
    print(“count of 1:”, v.count(1), “,count of True:”, v.count(True))
    print(“count of 0:”, v.count(0), “,count of False:”, v.count(False))
    print(“index of True:”,v.index(True), “,index of False”,v.index(False))
    v.remove(True)
    print(“after v.remove(True):”,v)
    其执行结果为:

    count of 1: 3 ,count of True: 3 #1,True都同时为1或True
    count of 0: 2 ,count of False: 2 #0,False都同时为0或False
    index of True: 0 ,index of False 4 #下标0的1被视为True
    after v.remove(True): [True, 2, True, 0, False] #1被当作True移除了

    s = input("")
    li = eval(s)
    li2=[ele for ele in reversed(li)]
    li = []
    for i in li2:
        if i not in li:
            li.insert(0,i)
    print(li)
    
    7-4 统计字符串列表中每个字母出现的次数(高教社,《Python编程基础及应用》习题6-8)

    统计字符串列表中每个字母出现的次数。

    编写程序,使用eval()函数读入一个仅包含字符串对象的列表,然后统计该列表中每个字母出现的次数。
    列表中的字符串对象仅包含小写英文字母。

    输入格式:
    一个仅包括字符串对象的列表,且全部字符串对象中仅出现小写英文字母。

    输出格式:
    字母,次数

    字母,次数

    (注意按a-z的顺序输出)

    输入样例:
    [“aaab”, “cccdz”]
    输出样例:
    在这里给出相应的输出。例如:

    a,3
    b,1
    c,3
    d,1
    z,1

    s = input('')
    li = eval(s)
    dict = {}
    for i in li:
        for j in i:
            if j not in dict.keys():
                dict[j] = 1
            else:
                dict[j] = dict[j] + 1
    for i in sorted(dict):
        print(i, dict[i], sep=',')
    
    
    7-5 jmu-python-异常-学生成绩处理中级版

    小明在帮老师处理数据,这些数据的第一行是n,代表有n行整数成绩需要统计。
    接着连续输入n个成绩,如果中途输入错误(非整数)提示’Error! Reinput’,
    并输出错误的数据。然后重新输入,直到输入n个正确的成绩才退出。如果整个
    输入过程中没有错误数据,提示’All OK’。最后输出所有学生的平均值,保留两
    位小
    数。

    注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉
    空格再行处理。

    输入格式:
    第一行为n,代表接下来要输入的正确行数。
    然后输入成绩,输入错误则提示重输,直到输入n行正确的数据为止。

    输出格式:
    如果输入过程中无异常,需输出All OK。

    输入样例1:
    3
    1
    2
    3
    输出样例1:
    All OK
    avg grade = 2.00
    输入样例2:
    3
    1

    b
    2
    3
    输出样例2:
    Error for data #! Reinput
    Error for data b! Reinput
    avg grade = 2.00

    n = int(input())
    num = n
    sum_grade = 0
    flag = True
    err_grade = ""
    err_list = []
    while n:
        try:
            err_grade = input()
            grade = int(err_grade)
            sum_grade += grade
            n = n-1
        except:
            flag = False
            err_list.append(err_grade)
    if flag:
        print("All OK")
    else:
        for grade in err_list:
            print("Error for data %s! Reinput" % grade)
    print("avg grade = %.2f" % (sum_grade/num))
    
    
    7-6 下标异常

    输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”

    输入格式:
    输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。

    输出格式:
    输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”

    输入样例:
    在这里给出一组输入。例如:

    Hello World
    -4
    输出样例:
    在这里给出相应的输出。例如:

    o
    输入样例:
    在这里给出一组输入。例如:

    abcd
    4
    输出样例:
    在这里给出相应的输出。例如:

    输入下标有误
    输入样例:
    在这里给出一组输入。例如:

    Good
    ?

    s = input("")
    try:
        i = int(input())
    except:
        print("输入下标有误")
    else:
        try:
            print(s[i])
        except:
            print("输入下标有误")
    
    
    7-7 往返跑方阵

    所谓“往返跑方阵”,是指对任意给定的n,将1到n×n的整数依次填写到n×n的方阵中,从右上角第1个格子开始,向下填充;倒底后,往左移动一列,改变方向,向上填充;到最上面一行后,再向左一列,改变方向,向下填充;.…… 以此类推,直到将n×n的方阵填满。本题要求构造这样的“往返跑方阵”。

    输入格式:
    输入一个正整数n(1⩽n⩽10 )

    输出格式:
    输出n×n的往返跑方阵。每行n个数字,每个数字占3位,右对齐

    输入样例1:
    在这里给出一组输入。例如:

    3
    输出样例1:
    在这里给出相应的输出。例如:

    7 6 1
    8 5 2
    9 4 3
    输入样例2:
    在这里给出一组输入。例如:

    5
    输出样例2:
    在这里给出相应的输出。例如:

    21 20 11 10 1
    22 19 12 9 2
    23 18 13 8 3
    24 17 14 7 4
    25 16 15 6 5

    def f(n):
        list1 = []
        for i in range(n):
            li = []
            list1.append(li)
        a = 1
        lie1 = n
        while lie1>0:
            if n%2!=0:
                if lie1 % 2 != 0:
                    for j in range(n):
                        list1[j].insert(0, a)
                        a += 1
                else:
                    for j in range(n):
                        list1[0 - j - 1].insert(0, a)
                        a += 1
            else:
                if lie1 % 2 == 0:
                    for j in range(n):
                        list1[j].insert(0, a)
                        a += 1
                else:
                    for j in range(n):
                        list1[0 - j - 1].insert(0, a)
                        a += 1
            lie1-=1
        return list1
    
    nn = int(input(""))
    for i in f(nn):
        for j in i:
            print("%3d" % j, end="")
        print()
    
    

    Python编程技术作业-4

    单选

    2-1 要把5加到列表lst的末尾,用的是__B_ 。

    A.
    lst.add(5)

    B.
    lst.append(5)

    C.
    lst.addLast(5)

    D.
    lst.addEnd(5)

    2-2 以下哪一句会得到{‘1’,‘2’,‘3’}?C

    A.
    list(“123”)

    B.
    tuple(“123”)

    C.
    set(“123”)

    D.
    以上都不是
    2-3 对于两个集合s1和s2,s1 < s2的意思是?C

    A.
    s1的大小小于s2的大小

    B.
    s1的元素比s2的小

    C.
    s1是s2的真子集

    D.
    s2是s1的真子集
    2-4 已知x=[1,3,5]、y=[2,4,6],则x+y的结果是_____。C

    A.
    [2, 4, 6, 1, 3, 5]

    B.
    [1, 2, 3, 4, 5, 6]

    C.
    [1, 3, 5, 2, 4, 6]

    D.
    [6, 5, 4, 3, 2, 1]
    2-5 已知有 lista = [1, 2, 3, 2],则执行lista.reverse()之后,print(lista)的输出结果为(D)。翻转

    A.
    [1, 2, 2, 3]

    B.
    [3, 2, 2, 1]

    C.
    [3, 2, 1]

    D.
    [2, 3, 2, 1]
    2-6 给定字典d,以下选项中对d.keys()的描述正确的是 ( C)

    A.
    返回一个列表类型,包括字典d中所有键

    B.
    返回一个集合类型,包括字典d中所有键

    C.
    返回一种dict_keys类型,包括字典d中所有键

    D.
    返回一个元组类型,包括字典d中所有键
    2-7 给定字典d,以下选项中对x in d的描述正确的是 ( B)

    A.
    x是一个二元元组,判断x是否是字典d中的键值对

    B.
    判断x是否是字典d中的键

    C.
    判断x是否是在字典d中以键或值方式存在

    D.
    判断x是否是字典d中的值
    2-8 列表中的第一个负索引是什么?B

    A.
    0

    B.
    -1

    C.
    -2

    D.
    列表的大小减去1
    2-9 下列哪个选项不可以删除列表 List = [‘Google’, ‘Runoob’, ‘Taobao’,‘baidu’] 中的 'Runoob’元素。( C)

    A.
    del List[-3]

    B.
    List.pop(1)

    C.
    List.pop(2)

    D.
    List.remove(‘Runoob’)
    2-10 下述代码所实现的功能是:( C)

    scores = [‘小明’,99.5, 100, 97.5, 100, 100, 99.5]
    sum = sum(scores[1:])
    print(sum)

    A.
    输出列表中编号为1的元素

    B.
    输出列表中第一位数字和最后一位数字的和

    C.
    截取列表中元素 [99.5, 100, 97.5, 100, 100, 99.5]并进行累加之后得到总和,最后输出总和

    D.
    从列表中随便输出一位元素

    填空

    Python编程技术实验-1(编程基础)

    7-4 重复多个星号

    根据给定的整数n,在一行上打印n个*号。

    输入格式:
    输入一个整数n。

    输出格式:
    输出n个*号。

    输入样例:
    在这里给出一组输入。例如:

    3
    输出样例:
    在这里给出相应的输出。例如:

    ***
    
    x=int(input())
    print('*'*x)
    
    7-5 输入半径(大于0),计算圆面积

    本题目要求输入半径(大于0),并计算圆面积。
    注:如果输入的半径不大于0,则提示继续输入,直到输入符合条件的半径,才能进行计算。

    输入格式:
    在一行中输入一个数

    输出格式:
    半径为result1的圆的面积是result2

    其中result1是半径,result2是圆面积

    输入样例:
    在这里给出一组输入。例如:

    5
    输出样例:
    在这里给出相应的输出。例如:

    半径为5的圆的面积是78.5

    while True:
        x = int(input())
        if x > 0:
            area=3.14*x*x
            print("半径为"+str(x)+"的圆的面积是"+str(area))
            break
        else:
            continue
    
    7-6 按格式输出日期

    本题目要求输入代表日期的3个整数Y(年)、M(月)和D(日),然后以指定格式输出日期。

    输入格式:
    输入代表日期的3个合法整数Y(年)、M(月)和D(日)。

    输出格式:
    以指定的三种格式输出日期。

    输入样例:
    在这里给出一组输入。例如:

    2021
    3
    1
    输出样例:
    在这里给出相应的输出。例如:

    2021-3-1
    2021/3/1
    2021年3月1日

    y=int(input())
    m=int(input())
    d=int(input())
    print(str(y)+'-'+str(m)+'-'+str(d))
    print(str(y)+'/'+str(m)+'/'+str(d))
    print(str(y)+'年'+str(m)+'月'+str(d)+'日')
    
    7-7 华氏温度到摄氏温度的转换(高教社,《Python编程基础及应用》习题3-9)

    从键盘读取华氏温度,转换成摄氏温度并输出,保留1位小数。
    转换公式为:c=5/9*(f-32), 其中,f为华为温度,c为摄氏温度。

    输入格式:
    华氏温度

    输出格式:
    摄低温度

    输入样例:
    100
    输出样例:
    37.8

    f=int(input())
    c=5/9*(f-32)
    print(round(c,1))
    
    7-8 比较大小

    输入3个不同整数,这3个整数分别对应3个字母的ASCII码值,把这3个字母按它的ASCII码值从小到大输出。

    输入格式:
    输入在一行中给出3个整数,其间以空格分隔

    输出格式:
    在一行中将3个字母按ASCII码值从小到大输出,其间以“<”相连。

    输入样例:
    在这里给出一组输入。例如:

    97 65 100
    输出样例:
    在这里给出相应的输出。例如:

    A<a<d

    numlist=sorted(list(map(eval,input().split())))
    print("{:c}<{:c}<{:c}".format(numlist[0],numlist[1],numlist[2]))
    
    7-9 统计字符串中子串出现的次数

    编写一个程序,计算字符串中子串出现的次数。

    输入格式:
    从键盘输入字符串和子串。第一行输入字符串,第2行输入子串。

    输出格式:
    输出子串出现了多少次

    输入样例:
    在这里给出一组输入。例如:

    你好,很高兴见到你,你贵姓?我们交个朋友吧!

    输出样例:
    在这里给出相应的输出。例如:

    3

    m=input()
    mm=input()
    print(m.count(mm))
    

    Python编程技术实验-2(程序结构)

    7-1 判断点在圆内或圆外

    输入五个数据,分别为圆C的中心位置坐标x和y,圆的半径,点P的位置坐标x和y。如果P位于圆C上,则输出“在圆内”,否则输出“在圆外”。

    输入格式:
    第一行输入圆C的中心坐标x和y,用逗号隔开
    第二行输入圆的半径
    第三行输入点P的位置坐标x和y,用逗号隔开

    输出格式:
    “在圆内”或“在圆外”

    输入样例:
    在这里给出一组输入。例如:

    0,0
    3
    3,0
    输出样例:
    在这里给出相应的输出。例如:

    ( 3 , 0 )在圆内

    x,y=input().split(',')
    r=input()
    x1,y1=input().split(',')
    x = int(x)
    y = int(y)
    x1 = int(x1)
    y1 = int(y1)
    r = int (r)
    if (x1-x)*(x1-x)+(y1-y)*(y1-y) <= r*r :
      print("( {} , {} )在圆内".format(x1,y1))
    else:
        print("( {} , {} )在圆外".format(x1,y1))
    
    7-2 身体质量指数(高教社,《Python编程基础及应用》习题6-3)

    身体质量指数(英文为Body Mass Index,简称BMI),其值为体重除以身高的平方。体重单位为千克,身高
    单位为米。BMI是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。下面是16岁以上人群的BMI图
    表:

    BMI 解释
    BMI<18 超轻
    18<=BMI<25 标准
    25<=BMI<27 超重
    27<=BMI 肥胖
    编写一个程序,输入用户的体重(Kg)和身高(米),显示其BMI值,并作出解释性评价。

    输入格式:
    体重,身高

    输出格式:
    超轻/标准/超重/肥胖之一。

    输入样例:
    70,1.75
    输出样例:
    标准

    w, h = (input().split(","))
    h = float(h)
    w = float(w)
    result = w / (h * h)
    if result < 18:
        print("超轻")
    elif result < 25:
        print("标准")
    elif result < 27:
        print("超重")
    else:
        print("肥胖")
    
    
    7-3 本题要求两个给定正整数的最大公约数和最小公倍数。

    本题要求两个给定正整数的最大公约数和最小公倍数。

    输入格式:
    输入在两行中分别输入正整数x和y。

    输出格式:
    在一行中输出最大公约数和最小公倍数的值。

    输入样例1:
    在这里给出一组输入。例如:

    100
    1520
    输出样例1:
    在这里给出相应的输出。例如:

    20 7600

    x = int(input())
    y = int(input())
    if x > y:
        a = x
        b = y
    else:
        a = y
        b = x
    while b:
        c = a % b
        a = b
        b = c
    d = int(x * y / a)
    print(a, d)
    
    7-4 X教授决策成绩评定

    X教授让助教帮助录入期末成绩,X教授决定期末成绩录入采取五级制,其中得分对应关系为:大于等于90分,成绩为A;80-89分成绩为B;70-79分成绩为C;60-69分成绩为D;低于60分为E。

    输入格式:
    输入一个整数

    输出格式:
    输出对应的五级制分数(A、B、C、D、E)

    输入样例:
    90
    输出样例:
    在这里给出相应的输出。例如:

    A

    s = int(input())
    if s >= 90:
        print("A")
    elif s >= 80:
        print("B")
    elif s >= 70:
        print("C")
    elif s >= 60:
        print("D")
    elif s < 60:
        print("E")
    
    7-5 统计输入字符个数

    统计不同字符个数。

    输入格式:
    键盘输入一行字符串,统计空格、数字、中文、英文字符和其他字符个数。基本中文字符的Unicode编码范围是:4E00~9FA5

    输出格式:
    您输入的字符串中有?个空格,?个数字,?个中文,?个英文字符,?个其他字符

    输入样例:
    在这里给出一组输入。例如:

    zho中国人民66666 +++++
    输出样例:
    在这里给出相应的输出。例如:

    您输入的字符串中有3个空格,5个数字,4个中文,3个英文字符,5个其他字符

    lst = list(input())
    
    izhongwei = []
    ialphas = []
    iSpace = []
    iNumber = []
    iOther = []
    
    for i in range(len(lst)):
        if ord(lst[i]) in range(65, 91):
            ialphas.append(lst[i])
        elif ord(lst[i]) in range(97, 123):
            ialphas.append(lst[i])
        elif lst[i] == ' ':
            iSpace.append(' ')
        elif ord(lst[i]) in range(48, 58):
            iNumber.append(lst[i])
        elif u'\u4e00' <= lst[i] <= u'\u9fff':
            izhongwei.append(lst[i])
        else:
            iOther.append(lst[i])
    print(f"您输入的字符串中有{len(iSpace)}个空格,{len(iNumber)}个数字,{len(izhongwei)}个中文,{len(ialphas)}个英文字符,{len(iOther)}个其他字符")
    
    
    7-6 判断是否为3和5的倍数

    输入一个正整数n,判断它是不是3和5的倍数,如果是,则,输出n是3和5的倍数,否则,输出n不是3和5的倍数。

    输入格式:
    输入一个正整数n的值

    输出格式:
    n是3和5的倍数 或者 n不是3和5的倍数

    输入样例:
    例如:

    15
    输出样例:
    例如:

    15是3和5的倍数
    输入样例:
    例如:

    10
    输出样例:
    例如:

    10不是3和5的倍数

    aa = int(input())
    if aa%3==0 and aa%5==0:
        print(f"{aa}是3和5的倍数")
    else:
        print(f"{aa}不是3和5的倍数")
    
    7-7 天天向上的力量

    一年365天,一周工作5天,工作日每天进步一点x%;一周休息2天,休息日退步一点x%,这样一年下来,一共进步了多少呢?

    输入格式:
    在一行中输入一个正实数,表示进步或退步的百分比

    输出格式:
    如果输入的值<=0,则输出:“输入的值应该大于0”,否则,将计算出来的值保留2位小数,输出格式为:‘工作日的力量:result’。

    输入样例:
    在这里给出一组输入。例如:

    0.01
    输出样例:
    在这里给出相应的输出。例如:

    工作日的力量:4.63

    import math
    
    x=float(input())
    if x<=0:
        print("输入的值应该大于0")
    else:
        dayup=math.pow((1.0+0.01),154)
        print('工作日的力量:%.2f' % dayup)
    

    7-8 百钱百鸡
    分数 10
    作者 刘琦
    单位 天津城建大学
    中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何? 要求: 给出所有的解,每组解占一行 解的顺序:按“字典序”排列,即公鸡数少的在前;公鸡数相同,母鸡数少的在前。

    百钱百鸡问题的白话版:100元钱买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只。问公鸡、母鸡、小鸡各多少只(某种鸡可以为0只)?

    现在把100改为n,即n元钱买n只鸡,各种鸡价格不变,结果又如何呢?

    输入格式:
    输入一个整数n(100<=n<=1000)

    输出格式:
    按公鸡、母鸡、小鸡的数量输出具体买法。

    输入样例:
    在这里给出一组输入。例如:

    100
    输出样例:
    在这里给出相应的输出。例如:

    cock=0,hen=25,chicken=75
    cock=4,hen=18,chicken=78
    cock=8,hen=11,chicken=81
    cock=12,hen=4,chicken=84

    n = int(input())
    for i in range(n):
        for m in range(n):
            for z in range(n):
                if n == i + m + z and n * 3 == i * 15 + m * 9 + z:
                    print("cock={},hen={},chicken={}".format(i, m, z))
    
    7-9 三七二十一

    某天,诺诺看到三七二十一(3721)数,觉得很神奇,这种数除以3余2,而除以7则余1。例如8是一个3721数,因为8除以3余2,8除以7余1。现在给出两个整数a、b,求区间[a,b]中的所有3721数,若区间内不存在3721数则输出“none”。

    输入格式:
    首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个整数a,b(1≤a<b<2000)。

    输出格式:
    对于每组测试,在一行上输出区间[a,b]中所有的3721数,每两个数据之间留一个空格。如果给定区间不存3721数,则输出“none”(引号不必输出)。

    输入样例:
    2
    1 7
    1 100
    输出样例:
    none
    8 29 50 71 92

    n = int(input())
    for i in range(n):
        sum = 0
        m1, m2 = map(int, input().split())
        for i in range(m1, m2 + 1):
            if i % 3 == 2 and i % 7 == 1:
                if sum >= 1:
                    print(" %d" % i, end='')
                else:
                    print(i, end='')
                sum += 1
     
        if sum == 0:
            print("none")
        else:
            print()
    
    7-10 亲和数判断

    古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们称这样的数对为亲和数。也就是说,若两个数中任何一个数都是另一个数的真约数之和,则它们就是亲和数。请判断输入的两个整数是否是亲和数。

    输入格式:
    测试数据有多组,处理到文件尾。每组测试输入两个正整数a,b。

    输出格式:
    对于每组测试,若a,b是亲和数,是则输出“YES”,否则输出“NO”。引号不必输出。

    输入样例:
    220 284
    输出样例:
    YES

    try:
        while True:
            answer_list = []
            def getSum(number):
                list_appr = []
                for i in range(1, number // 2 + 1):
                    if number % i == 0:
                        list_appr.append(i)
                return sum(list_appr)
            def judge(number1, number2):
                answer1 = getSum(number1)
                answer2 = getSum(number2)
                if answer1 == number2 and answer2 == number1:
                    print("YES")
                else:
                    print("NO")
            num1, num2 = map(int, input().split())
            answer_list.append(judge(num1, num2))
    except EOFError:
        pass
    

    Python编程技术实验-3(复合数据类型)

    7-1 求整数的位数及各位数字之和

    对于给定的正整数N,求它的位数及其各位数字之和。(提示:把整数转换成字符串,列表,用sum和len函数)

    输入格式:
    输入在一行中给出一个正整数N。

    输出格式:
    在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

    输入样例:
    在这里给出一组输入。例如:

    456
    输出样例:
    在这里给出相应的输出。例如:

    3 15

    x=input()
    num=0
    for i in x:
        num+=int(i)
    print(len(x),num)
    
    7-2 Python-任意多行字符串拆分数值求和

    编写程序,统计每行字符串中若干整数的和。每行字符串中整数间的分隔符可能有逗号“,”、分号“ ;”和空格,有多少行就求多少行。

    输入格式:
    任意输入若干行由整数构成的字符串(回车换行),整数间以逗号或空格或分号分隔。测试数确保至少有一行数据,字符串中的整数数据均合法有效。最后以一个回车结束输入。

    输出格式:
    对应输出原输入串(一行中的字符序列),冒号后输出各个整数之和。

    输入样例:
    1; 2 ,3
    2 3; 4
    10,20 30; 40
    9
    输出样例:
    1; 2 ,3:6
    2 3; 4:9
    10,20 30; 40:100
    9:9

    try:
        while True:
            str1 = input()
            str2 = ''
            for i in str1:
                if i.isdigit():
                    str2 += i
                else:
                    str2 += ' '
            list1 = list(map(int, str2.split()))
            print("%s:%s"%(str1,sum(list1)))
    except EOFError:
        pass
    
    7-3 数据提取

    有一个列表 studs 如下:
    studs= [{‘sid’:‘103’,‘Chinese’: 90,‘Math’:95,‘English’:92},{‘sid’:‘101’,‘Chinese’: 80,‘Math’:85,‘English’:82},{‘sid’:‘102’,‘Chinese’: 70,‘Math’:75,‘English’:72}]
    将列表 studs 的数据内容提取出来,放到一个字典 scores 里,在屏幕上按学号从小到大的顺序显示输出 scores 的内容。

    输入格式:
    无输入。

    输出格式:
    输出内容:
    101:[85, 82, 80]
    102:[75, 72, 70]
    103:[95, 92, 90]

    输入样例:
    在这里给出一组输入。例如:

    输出样例:
    在这里给出相应的输出。例如:

    101:[80, 85, 82]
    102:[70, 75, 72]
    103:[90, 95, 92]

    studs= [{'sid':'103','Chinese': 90,'Math':95,'English':92},{'sid':'101','Chinese': 80,'Math':85,'English':82},{'sid':'102','Chinese': 70,'Math':75,'English':72}]
    
    scores = {}
    for stud in studs:
        sv = stud.items() 
        v = []
        for it in sv:
            if it[0] =='sid':
                k = it[1]
            else:
                v.append(it[1])
        scores[k]  = v
    
    so = list(scores.items())
    so.sort(key = lambda x:x[0],reverse = False)
    for l in so:
        print('{}:{}'.format(l[0],l[1]))
    
    7-4 汉字表示的大写数字金额

    输入一个整数金额,输出汉字表示的大写金额。假设输入的金额数为正整数,且最大为12位数字。

    输入格式:
    输入一个正整数,表示金额,最大位数为12。

    输出格式:
    输出汉字表示的大写金额。输出的时候,从第一位数字开始,后面所有的位数都需要输出,包括0(零)。

    输入样例:
    123456789
    输出样例:
    壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆
    输入样例:
    987600020000
    输出样例:
    玖仟捌佰柒拾陆亿零仟零佰零拾贰万零仟零佰零拾零圆

    s=[]
    s=str(input())
    s=list(s)
    length=len(s)
    zd={}
    zd[0]="零"
    zd[1]="壹"
    zd[2]="贰"
    zd[3]="叁"
    zd[4]="肆"
    zd[5]="伍"
    zd[6]="陆"
    zd[7]="柒"
    zd[8]="捌"
    zd[9]="玖"
    for i in range(len(s)):
       print(zd[ord(s[i])-48],end="")
       if len(s)-i==9:
        print("亿",end="")
        continue
       if len(s)-i==5:
        print("万",end="")
        continue
       if  (len(s)-i)==7 or (len(s)-i)==3 or (len(s)-i)==11:
        print("佰",end="")
       elif  (len(s)-i)==8 or (len(s)-i)==4 or (len(s)-i)==12:
        print("仟",end="")
       elif  (len(s)-i)==6 or (len(s)-i)==2 or (len(s)-i)==10:
        print("拾",end="")
    print("圆")
    
    7-5 sdut-字母替换

    编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。

    (Python实现提示:转换表用元组实现)

    原字母 对应字母
    A Z
    B Y
    C X
    D W
    … …
    X C
    Y B
    Z A
    输入格式:
    在一行中输入字符串。

    输出格式:
    在一行中给出替换完成后的字符串。

    输入样例:
    This is a pen.
    输出样例:
    在这里给出相应的输出。例如:

    Ghis is a pen.

    s=input()
    for i in s:
        if i.isupper():
            tmp1=ord(i)-65
            tmp2=90-tmp1
            i=chr(tmp2)
        print(i,end="")
    
    7-6 sdut-查验身份证

    一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

    首先对前17位数字加权求和,权重分配为:
    {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

    Z:0 1 2 3 4 5 6 7 8 9 10
    M:1 0 X 9 8 7 6 5 4 3 2
    现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

    验证身份证合法性的规则:(1)前17位是否全为数字;(2)最后1位校验码计算准确。

    输入格式:
    输入第一行给出正整数N(≤100)表示:输入的身份证号码的个数。

    随后N行,每行给出1个18位身份证号码。

    输出格式:
    按照输入的顺序每行输出1个有问题的身份证号码。

    如果所有号码都正常,则输出All passed。

    输入样例1:
    4
    320124198808240056
    12010X198901011234
    110108196711301866
    37070419881216001X
    输出样例1:
    12010X198901011234
    110108196711301866
    37070419881216001X
    输入样例2:
    2
    320124198808240056
    110108196711301862
    输出样例2:
    All passed

    def is_digits(ss):
        for s in ss:
            if not s.isdigit():
                return False
        return True
    
    
    weights = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]  
    M_codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']  
    wrong_ids = []  
    n = int(input())
    for i in range(n):
        id = input()
        if len(id) != 18:  
            wrong_ids.append(id)
            continue
    
        if not is_digits(id[:17]):  
            wrong_ids.append(id)
            continue
    	#计算验证码
        total = 0
        for j in range(17):
            total += int(id[j]) * weights[j]
    
        z = total % 11
        if M_codes[z] != id[17]:  
            wrong_ids.append(id)
    
    if len(wrong_ids) == 0:
        print("All passed")
    else:
        for id in wrong_ids:
            print(id)
    
    7-7 sdut-字典合并

    输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。

    注意:1和‘1’是不同的关键字!

    输入格式:
    在第一行中输入第一个字典字符串;

    在第二行中输入第二个字典字符串。

    输出格式:
    在一行中输出合并的字典,输出按字典序。

    “1” 的 ASCII 码为 49,大于 1,排序时 1 在前,“1” 在后。其它的字符同理。

    输入样例1:
    {1:3,2:5}
    {1:5,3:7}
    输出样例1:
    1:8
    2:5
    3:7
    输入样例2:
    {“1”:3,1:4}
    {“a”:5,“1”:6}
    输出样例2:
    1:4
    ‘1’:9
    ‘a’:5

    dict1 = dict(eval(input()))
    dict2 = dict(eval(input()))
    list1 = []
    for i in dict1:
        if i in dict2:
            dict2[i] += dict1[i]
        else:
            dict2[i] = dict1[i]
    for i in dict2:
        list1.append(i)
    list2 = list(set(list1))
    list3 = []
    list4 = []
    for i in list2:
        if isinstance(i, str):
            list3.append(i)
            list4.append(ord(i))
        else:
            list4.append(i)
    dict3 = {}
    for i in dict2:
        if isinstance(i, str):
            dict3[ord(i)] = dict2[i]
        else:
            dict3[i] = dict2[i]
    for i in sorted(list4):
        if chr(i) not in list3:
            print("%s:%s" % (i, dict3[i]))
        else:
            print("'%s':%s" % (chr(i), dict3[i]))
    
    7-8 单词统计

    单词统计。

    输入格式:
    给出一个字符串 s = “When looking up to the happiness of others, others are looking up to your happiness.”,请统计并打印字符串 s 中出现单词的个数。

    输出格式:
    输出单词个数。

    输入样例:
    在这里给出一组输入。例如:

    输出样例:
    在这里给出相应的输出。例如:

    15

    s = "When looking up to the happiness of others, others are looking up to your happiness"
    num = len(s.strip().split(' '))
    print( num)
    
    7-9 集合A-B

    求两个集合的差集。注意,同一个集合中不能有两个相同的元素。

    输入格式:
    首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入1行,每行数据的开始是2个整数n(0 < n ≤ 100)和m(0 < m ≤ 100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B。每两个元素之间以一个空格分隔。

    输出格式:
    针对每组测试数据输出一行数据,表示集合A-B的结果,如果结果为空集合,则输出“NULL”(引号不必输出),否则从小到大输出结果,每两个元素之间以一个空格分隔。

    输入样例:
    2
    3 3 1 3 2 1 4 7
    3 7 2 5 8 2 3 4 5 6 7 8
    输出样例:
    2 3
    NULL

    t = eval(input())
    for i in range(t):
        a, b = [], []
        s = list(map(int, input().split(" ")))
        n, m = s[0], s[1]
        a = s[2:2 + n]
        b = s[2 + n:]
        # c = [item for item in a if item not in b]
        c = set(a)-set(b)
        c = sorted(c)
        try:
            for y in range(len(c) - 1):
                print(c[y], end=" ")
            print(c[-1])
        except:
            print("NULL")
    
    7-10 奇特的四位数

    一个四位数,各位数字互不相同,所有数字之和等于6,并且这个数是11的倍数。
    满足这种要求的四位数有多少个?各是什么?

    输入格式:
    该题目没有输入

    输出格式:
    第一行输出符合条件的数字个数

    第二行以列表形式输出所有满足条件的四位数,列表元素按由小到大顺序排列

    输入样例:
    在这里给出一组输入。例如:

    输出样例:
    在这里给出相应的输出。例如:

    6
    [1023, 1320, 2013, 2310, 3102, 3201]

    def digitSum(v):                    
        lis = list(str(v))
        lis = list(map(int, lis))
        return sum(lis)
     
     
    def digitsame(v):                  
        lis = list(str(v))
        lis = list(map(int, lis))
        lis1 = list(set(lis))
        if len(lis1) == 4:
            return True
        return False
     
     
    lis = []
    for i in range(1000, 10000):
        if digitSum(i) == 6 and i % 11 == 0 and digitsame(i):
            lis.append(i)
    print(6)
    print(lis)
    

    Python编程技术实验-4(函数和类)

    6-1 列表推导生成随机数矩阵(高教社,《Python编程基础及应用》习题4-10)

    编写一个Python函数,生成一个m行n列的元素值不大于20的随机数矩阵(二维列表)。
    提示:使用random.randint()函数来生成随机数。

    函数接口定义:
    def generateMatrix(m,n)
    m: 行数,int, 1 < m < 100; n: 列数, int, 1 < n < 100.

    裁判测试程序样例:
    import random

    m = int(input())
    n = int(input())
    r = generateMatrix(m,n)
    p = True
    for i in range(m):
    for j in range(n):
    if r[i][j] > 20:
    p = False
    break
    if m > 3 and n > 3:
    if r[0][0] == r[2][2] and r[1][1] == r[1][2] and r[0][2] == r[3][0]:
    p = False

    print§
    #测试程序的输出:
    True
    测试输入样例:
    5
    3
    测试程序输出:
    True

    def generateMatrix(m,n):
        return [[random.randint(0,20) for x in range(n)] for y in range(m)]
    
    
    6-2 整数数位和(高教社,《Python编程基础及应用》习题8-3)

    编写一个函数,该函数接受一个正整数作为参数,返回该整数的各位数字之和。

    函数接口定义:
    def digitSum(v)
    v为输入整数(正整数);
    函数返回一个整数,其值为v的各位数字之和。

    裁判测试程序样例:
    a = int(input())
    print(digitSum(a))
    输入样例:
    291
    输出样例:
    12

    def digitSum(v):
        sum=0
        while(v):
            sum+=v%10
            v//=10
        return sum
    
    6-3 编写函数计算一个或不特定多个数的乘积(高教社,《Python编程基础及应用》习题8-6)

    函数接口定义:
    def caculate(t)
    号的参数t接受多个参数成员,参数成员预期为整数或浮点数类型。

    裁判测试程序样例:
    s = input().split() #接受输入字符串并按空格分拆,存入列表,列表成员为字符串类型
    t = [float(x) for x in s] #使用列表推导将列表s中的成员全部转换成浮点数,存入另一个列表t
    print(“%.4f” % caculate(*t))
    输入样例:
    3 2 1
    输出样例:
    6.0000

    def caculate(*t):
        product = 1
        for value in t:
            product *= value
        return product
    
    6-4 编写生成斐波那契数列的函数并调用。(升级版v2.0)

    本题要求实现一个函数,可实现计算最后一项小于指定值的斐波那契数列。

    函数接口定义:
    在这里描述函数接口。例如:
    def fib(n):
    n是用户传入的参数。 函数须输出最后一项小于指定值的斐波那契数列。

    裁判测试程序样例:
    在这里给出函数被调用进行测试的例子。例如:
    ‘’’
    你写的函数在这里
    ‘’’

    fib(input())
    输入样例1:
    在这里给出一组输入。例如:

    1000
    输出样例1:
    在这里给出相应的输出。例如:

    1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
    输入样例2:
    在这里给出一组输入。例如:

    1
    输出样例2:
    在这里给出相应的输出。例如:

    1 1
    输入样例3:
    在这里给出一组输入。例如:

    -50
    输出样例3:
    在这里给出相应的输出。例如:

    输入数据错误!

    def fib(n):
        n=int(n)
        a, b = 1, 1
        while a < n:
            print(a, end = ' ')
            a, b = b, a + b
        if (n == 1):
            print(1 ,1)
        elif (n <= 0):
            print('输入数据错误!')
    
    6-5 判断素数的函数

    输入若干整数(输入0结束),每个整数输入完毕后,马上输出该整数是否为素数。
    本题要求写一个函数def prime(m),判断整数m是否为素数,是素数返回True,否则返回False。

    函数接口定义:
    def prime(m)
    裁判测试程序样例:
    /* 请在这里填写答案 */

    while True:
    n=int(input())
    if n==0:
    break
    if n<2:
    print(“Invalid”)
    else:
    if prime(n):
    print(“Yes”)
    else:
    print(“No”)
    输入样例:
    3
    -1
    50
    1
    19
    0
    输出样例:
    Yes
    Invalid
    No
    Invalid
    Yes

    def prime(m):
        for i in range(2, m):
            if m % i == 0:
                return False
        else:
            return True
    
    6-6 定义并实现身体质量指数类(高教社,《Python编程基础及应用》习题9-3)

    按图施工,设计下述BMI类,用于计算身体质量指数。该指数等于体重(kg)除以身高(米)的平方。

    b2.png

    相应的判定标准如下图所示。
    b1.png

    BMI类接口定义:
    class BMI:

    其中,name为姓名,age为年龄,height为身高,单位为米,weight为体重,单位为kg。

    getBMI()函数返应计算所得的身体质量指数;

    getStatus()返回评价结果,其值应为超轻/标准/超重/肥胖之一。

    裁判测试程序样例:
    sName = input() #输入姓名
    iAge = int(input()) #输入年龄
    fHeight = eval(input()) #输入身高,预期为浮点数,单位米
    fWeight = eval(input()) #输入体重,预期为浮点数,单位千克
    bmi=BMI(sName,iAge,fHeight,fWeight) #实例化BMI类
    print(“Name:”,bmi.name)
    print(“Age:”,bmi.age)
    print(“BMI = %.3f” % bmi.getBMI())
    print(“Result =”,bmi.getStatus())
    输入样例:
    Alex
    27
    1.75
    68
    输出样例:
    Name: Alex
    Age: 27
    BMI = 22.204
    Result = 标准

    class BMI:
        def __init__(self, sName, iAge, fHeight, fWeight):
            self.name = sName
            self.age = iAge
            self.height = fHeight
            self.weight = fWeight
    
        def getBMI(self):
            return self.weight / self.height ** 2
    
        def getStatus(self):
            res = self.getBMI()
            if res < 18:
                return '超轻'
            elif res < 25:
                return '标准'
            elif res < 27:
                return '超重'
            else:
                return '肥胖'
    
    6-7 编写Pet类

    编写一个名为Pet的类,它应具有以下属性:

    __name:表示宠物的名字

    __age:表示宠物的年龄
    Pet类应该有一个__init__方法来创建这些属性。

    它还应有以下方法:

    setName方法:为__name属性赋值
    setAge方法:为__age属性赋值
    getName方法:返回__name属性的值
    getAge方法:返回__age属性的值
    Pet类还要有__str__方法,返回相关描述。

    完成Pet类定义后,根据以下裁判测试程序进行测试。

    Pet类定义:
    class Pet:

    裁判测试程序样例:

    请在这里填写Pet类的定义

    def main():

    # 获取数据
    pet_name = input()
    pet_age = int(input())
    
    # 创建一个Pet实例.
    mypet = Pet(pet_name, pet_age)
    
    # 显示输入的数据
    print('Here is the data that you entered: ')
    print('Pet name: ', mypet.getName())
    print('Age of pet: ', mypet.getAge())
    # 输出描述
    print(mypet)
    

    main()
    输入样例:
    在这里给出一组输入。例如:

    Peter
    2
    输出样例:
    在这里给出相应的输出。例如:

    Here is the data that you entered:
    Pet name: Peter
    Age of pet: 2
    Peter is 2 age!

    class Pet(object):
    
        def __init__(self, name, age):
            self.__name = name
            self.__age = age
    
        def setName(self, name):
            self.__name = name
    
        def setAge(self, age):
            self.__age = age
    
        def getName(self):
            return self.__name
    
        def getAge(self):
            return self.__age
    
        def __str__(self):
            return f'{self.__name} is {self.__age} age!'
    
    6-8 编写一个Fan类

    设计一个名为Fan的类表示一个风扇。这个类包括:

    1.三个名为SlOW、MEDIUM和FAST,其值为1、2和3常量表示风扇的速度。

    2.一个名为speed的int类型私有数据域表示风扇的速度(默认值为SLOW)。

    3.一个名为on的boolean类型私有数据域表示风扇是否打开(默认值为false)。

    4.一个名为radius的double类型私有数据域表示风扇的半径(默认值为5)。

    5.一个名为color的string类型数据域表示风扇的颜色(默认值为white)。

    6.这四个数据域的访问器和修改器。

    7.一个构造方法创建一个具有特地速度、半径、颜色以及是否打开的风扇。

    请在自己的草稿本上画出UML图,养成良好的设计习惯。

    要求:创建两个Fan对象:

    第一个对象,构造默认值的风扇对象Fan1;

    第二个对象,赋值最大速度、半径为10、颜色为blue,打开它的对象Fan2。

    显示每个对象的speed、radius、color和on属性

    ###Fan类定义:

    class Fan:

    裁判测试程序样例:
    SLOW = 1
    MEDIUM = 2
    FAST = 3

    #请在这里填写答案

    def main():
    fan1 = Fan()
    print(fan1)
    print()

    fan2 = Fan()
    fan2.setSpeed(FAST)
    fan2.setRadius(10)
    fan2.setColor("blue")
    fan2.setOn(True)
    print(fan2)
    

    main()
    输入样例:
    无输入

    输出样例:
    speed 1
    color white
    radius 5
    fan is off

    speed 3
    color blue
    radius 10
    fan is on

    class Fan:
        def __init__(self):
            self.SLOW = 1
            self.MEDIUM = 2
            self.FAST = 3
            self.__speed = self.SLOW
            self.__on = False
            self.__radius = 5
            self.color = "white"
    
        def __str__(self):
            res = ''
            if self.__on == False:
                res = 'off'
            else:
                res = 'on'
            return f'speed {self.__speed}\ncolor {self.color}\nradius {self.__radius}\nfan is {res}'
    
        def getSpeed(self):
            return self.__speed
    
        def setSpeed(self, n):
            self.__speed = n
    
        def getOn(self):
            return self.__on
    
        def setOn(self, n):
            self.__on = n
    
        def getRadius(self):
            return self.__radius
    
        def setRadius(self, n):
            self.__radius = n
    
        def getColor(self):
            return self.color
    
        def setColor(self, n):
            self.color = n
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » python期末习题整理

    发表评论