python期末习题整理

文章目录

      • 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

函数接口定义:
函数接口:
sum(m,n)
m

裁判测试程序样例:

/* 请在这里填写答案 */
在这里给出函数被调用进行测试的例子。例如:
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

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

输出格式:
对于每组测试,在一行上输出区间[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

你可能感兴趣的:(笔记,python,开发语言)