新建文本文档
.md
2020/10/16
1 / 35
《
Python
语言程序设计》
各章复习题
(2020)
说明
:
可以在题目下面生成
代码格
,完成每个题目。
题目来自于教材例题、课后习题、上课作业及其他教材。
第一章
Python
概述
【
1-1
】导入
math
模块,列出
math
模块的所有函数和常量说明。
In [ ]:
import
math
print(math.ceil(
1.7
))
print(math.floor(
1.7
))
#math.copysign(x,y)
返回一个基于
x
的绝对值和
y
的符号的浮点数
print(math.copysign(
-1
,
-0.0
))
print(math.copysign(
-1
,
0.0
))
print(math.fabs(
-1.2
))
#
绝对值
print(math.factorial(
5
))
#
阶乘
print(math.fmod(
2.0
,
0.3
))
#
用于浮点数取模时用
fmod
,整数直接
%
print(math.frexp(
1.0
))
#x=m * 2**e
用来分离浮点数的内部表示
#
返回迭代中的精确浮点值
print(sum([
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
]))
print(math.fsum([
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
,
0.1
]))
print(math.gcd(
2
,
4
))
print(math.exp(
2
))
print(math.log2(
2
))
print(math.pow(
2
,
3
))
print(math.sqrt(
4.0
))
print(math.pi, math.e)
第二章 语言基础
【
2.1
】编程完成以下功能:
1
)同时给
x,y
赋值为
10
;
2
)给
a,b
分别赋值为
3,5
;
3
)交换
a,b
的值
4
)计算
a+=2
5)
将列表
[1,2,"abc"]
中的元素重复
3
次,然后删掉其中的元素
2
。
In [ ]:
x, y =
10
,
10
a, b =
3
,
5
a, b = b, a
a +=
2
s = [
1
,
2
,
"abc"
]
s *=
3
s = [x
for
x
in
s
if
x !=
2
]
新建文本文档
.md
2020/10/16
2 / 35
【
2.2
】运用输入输出函数编写程序,能将华氏温度转换成摄氏温度。换算公式:
C=(F-32)*5/9
,其中
C
为摄氏
温度,
F
为华氏温度。
In [ ]:
F=eval(input())
C = (F -
32
) *
5
/
9
print(C)
【
2.3
】编写程序,根据输入的长和宽,计算矩形的面积并输出。
In [ ]:
length = eval(input())
width = eval(input())
s = length * width
print(s)
【
2.4
】编写程序,输入三个学生的成绩,计算平均分并输出。
In [ ]:
s = input().split()
ans =
0
for
x
in
s :
x = int(x)
ans += x
print(
"%.2f"
%(ans /
3.0
))
【
2.5
】小明过年得到
1500
元压岁钱,在商场看中一个书包,正好商场做活动打八五折,从键盘输入书包的价
格,输出折扣后书包的价格以及小明买了书包后剩下的钱。
In [ ]:
price = eval(input())
discount = price *
0.85
money =
1500
- discount
print(discount, money)
【
2.6
】通过输入函数
input()
输入股票代码、股票名称、当天股票最高价和最低价,通过输出函数
print()
输出股
票代码
+
股票名称、最高价、最低价和差值。
In [ ]:
新建文本文档
.md
2020/10/16
3 / 35
code, name, maxPrice, minPrice = input().split()
print(code, name, maxPrice, minPrice, int(maxPrice) - int(minPrice))
第三章 分支与循环控制语句
【
3.1
】从键盘输入圆的半径,如果半径大于等于
0
,则计算并输出圆的面积和周长。【单分支】
In [ ]:
from
math
import
pi
r = eval(input())
if
r >
0
:
print(
"area:"
,pi * r * r, sep=
""
)
print(
"circumference:"
,
2
* pi * r, sep=
""
)
【
3.2
】从键盘输入年份
t
,如果年份
t
能被
400
整除,或者能被
4
整除但不能被
100
整除,则输出
“t
年是闰年
”
,否
则输出
“t
年不是闰年
”
,
t
用输入的年份代替。【双分支】
In [ ]:
t = eval(input())
if
t %
400
==
0
or
(t %
4
==
0
and
t %
100
!=
0
) :
print(t,
"
是闰年
"
, sep=
""
)
else
:
print(t,
"
不是闰年
"
, sep=
""
)
【
3.4
】从键盘输入标准价格和订货量。 根据订货量大小,价格给以不同的折扣,计算应付货款(应付货款
=
订
货量
×
价格
×(1-
折扣
)
)。
订货量
300
以下,没有折扣;
订货量
300
及以上,
500
以下,折扣为
3%
;
订货量
500
及以上,
1000
以下,折扣
5%
;
订货量
1000
及以上,
2000
以下,折扣
8%
;
订货量
2000
及以上,折扣
10%
。【多分支】
In [ ]:
price = eval(input())
mount = eval(input())
if
mount <
300
:
print(mount * price)
elif
mount <
500
:
print(mount * price *
0.97
)
elif
mount <
1000
:
print(mount * price *
0.95
)
elif
mount <
2000
:
新建文本文档
.md
2020/10/16
4 / 35
print(mount * price *
0.92
)
else
:
print(mount * price *
0.90
)
【
3.5
】从键盘接收整数的一百分制成绩
(0-100),
要求输出其对应的成绩等级
A~E
。其中,
90
分(包含)以上为
A
,
80-89
分(均包含)为
B
,
70~79
(均包含)为
C
,
60~69
(均包含)为
D
,
60
分以下为
E
。
In [ ]:
grade = eval(input())
if
grade <
60
:
print(
"E"
)
elif
grade <
70
:
print(
"D"
)
elif
grade <
80
:
print(
"C"
)
elif
grade <
90
:
print(
"B"
)
else
:
print(
"A"
)
【
3.6
】输入一个时间(小时:分:秒),输出该时间经过
5
分
30
秒后的时间。
In [ ]:
hour, minute, second = input().split(
":"
)
second = int(second) +
30
minute = int(minute) +
5
hour = int(hour)
t = second /
60
second %=
60
minute += t
t = minute /
60
minute %=
60
hour = (hour + t) %
24
print(
"%02d:%02d:%02d"
%(int(hour), int(minute), int(second)))
【
3.7
】计算并输出小于等于
200
的所有
正偶数
之
和
。
In [ ]:
ans =
0
for
i
in
range(
2
,
201
,
2
) :
ans += i
print(ans)
新建文本文档
.md
2020/10/16
5 / 35
【
3.8
】编程从键盘输入公司某商品的订单销售额,并对输入的销售额累加求和。当输入的值小于等于
0
时终止
该操作。
In [ ]:
ans =
0
mount = eval(input())
while
mount !=
0
:
ans += mount
mount = eval(input())
print(ans)
【
3.9
】编写程序,按公式
s=1
2+2
2+3
2+...+n
2
求累加和
s
不超过
1000
的最大项数
n
,程序运行结果如下所示:
n
s 1 1 2 5 3 14 ... 14 1015
累计和不超过
1000
的最大项是
n=13
。
In [ ]:
ans =
0
t =
1
while
ans <
1000
:
ans += t**
2
print(t, ans)
t +=
1
【
3.10
】预设一个
0~9
之间的整数,让用户猜一猜并输入所猜的数。如果大于预设的数,显示
“
太大
”
;小于预设
的数,显示
“
太小
”
。如此循环,直至猜中该数,显示
“
恭喜!你猜中了!
”
。
In [ ]:
standard =
6
test = eval(input())
if
test > standard :
print(
"
太大
"
)
elif
test < standard :
print(
"
太小
"
)
else
:
print(
"
恭喜!你猜中了!
"
)
【
3.11
】求一个自然数除了自身以外的最大约数。【
break
】
In [ ]:
from
math
import
sqrt
test = eval(input())
x = int(sqrt(test)) +
1
while
x >
0
:
新建文本文档
.md
2020/10/16
6 / 35
if
test % x ==
0
:
break
x -=
1
print(x)
【
3.12
】从键盘输入一个正整数
n
,用
while
循环找出小于等于该整数
n
且能被
23
整除的最大正整数。如果找到
了,输出该整数;如果没有找到,则输出
“
未找到
”
In [ ]:
n = eval(input())
x = n
flag =
0
while
x >=
23
:
if
x %
23
==
0
:
flag =
1
break
x -=
1
if
flag ==
1
:
print(x)
else
:
print(
"
未找到
"
)
【
3.13
】有一个列表
sales=[5000, 3000, 8000, 10600, 6000, 5000]
。该列表中的元素依次表示某产品
1-6
月的销
售额。 请用
for
循环遍历该列表,找到第一个销售额大于等于
6000
的元素,并打印该元素的值。如果没有找
到,则输出
“
未找到
”
。
In [ ]:
sales=[
5000
,
3000
,
8000
,
10600
,
6000
,
5000
]
flag =
0
for
x
in
sales :
if
x >=
6000
:
print(x)
flag =
1
break
if
flag ==
0
:
print(
"
未找到
"
)
【
3.15
】利用
e=1+1/(1!)+1/(2!)+...+(1/n!)
。编写程序,计算
e
的近似值。要求直到最后一项的值小于
10**(-8)
,
计算终止。输出最后一个
n
的值及
e