python期末习题整理
文章目录Python编程技术作业-1判断单选填空编程题7-1 人生苦短,我学python7-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-
文章目录
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
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
更多推荐
所有评论(0)