一、问答题
(1)怎样生成一个满足条件10 ≤ i ≤ 50的随机整数?
import random
i = random.randint(10, 50)
random.randint(a, b) #包含a和b
(2)如果number分别是30和35,那么a中的代码和b中的代码的输出结果是什么?
# 代码a
if number % 2 == 0:print(number,"is even.")
print(number,"is odd.")
30 is even.
30 is odd.
# 代码b
if number % 2 == 0:print(number,"is even.")
elseprint(number,"is odd.")
35 is odd.
(3)如果是下面的代码中,假设x=3而且y=2,显示它的结果。如果x=3而且y=4,那么结果是什么?如果x=2而且y=2,那么结果是什么?请为这段代码绘制一个流程图。
if x > 2:if y > 2:z = x+yprint("z is”,z)else:print("x is",x)
x = 3, y = 2
结果: x is 3
x = 3, y = 4
结果:z is 7
x = 2,y = 2
结果:没有输出
(4)下面的代码错在哪里?
if score >= 60.0:grade='D'
elif score >= 70.0:grade ='C'
elif score >= 80.0:grade ='B'
elif score >= 90.0:grade = 'A'
else:grade ='F'
每一个if 后面的选项都没有上界
成绩在60—100分之间执行的都是grade = ”D“
(5)下面的代码有哪些错误?
# 代码A
if i > 0:x = 0y = 1
else:y = 0z = 0
没错
# 代码B
if i > 0:x = 0y = 1
else:y = 0z = 0
y = 1 这行代码没有缩进在if语句里面
# 代码C
if i > 0:x = 0y = 1
else:y = 0z = 0
x = 0
y = 1缩进格式不对
# 代码D
if i > 0:x = 0y = 1
else:y = 0z = 0
x = 0
y = 1
z = 0
这三行代码缩进格式不对
(6)如果number分别为14、15和30,那么下面代码的结果是什么?
# 代码A
if number % 2 == 0:print(number,"is even")
if number % 5 == 0:print(number,"is multiple of 5”)
# 代码B
if number % 2 == 0:print(number,"is even")
elif number % 5 == 0:print(number,"is multiple of 5”)
(7)下面两条语句相同吗?
# 代码A
if income <= 10000:tax = income * 0.1
elif income <= 20000:tax = 1000 + \(income - 10000) * 0.15
# 代码B
if income <= 10000:tax = income * 0.1
elif income > 10000 and income <= 20000:tax = 1000 + \(income -10000) * 0.15
相同,在代码A中elif的意思就是在income > 10000的情况下,income <= 20000. 所以相同
(8)下面的代码错在哪里?
income = 232323
if income <= 10000:tax = income *0.1
elif income > 10000 and income <= 20000:tax = 1000 + (income - 10000) * 0.15
print(tax)
print(tax)在if elif语句之外,但是tax没有在外面定义所以会报tax未定义的报错,tax只在if elif语句中有意义
(9)假设 x=1,显示下面布尔表达式的结果。
True and (3 > 4) #False
not (x > 0) and (x > 0) #False
(x > 0) or (x < 0) #True
(x != 0) or (x == 0) #True
(x >= 0) or (x < 0) #True
(x != 1) == not (x == 1) #True
(10)假设 x=4,y=5,显示下面的布尔表达式的结果。
x >= y >= 0 #False
x <= y >= 0 #True
x != y == 5 #True
(x != 0) or (x == 0) #True
(11)下面的表达式是否等价?
(x >= 1) and (x < 10)
(1 <= x < 10)
等价
(12)假设当你运行下面的程序,从控制台输入 2,3,6 那么输出结果是什么?
x, y, z = eval(input("Enter three numbers:"))print("(x < y and y < z) is",x < y and y < z)
print("(x < y or y < z) is",x < y or y < z)
print("not(x < y) is",not(x < y))
print("(x < y < z) is",x < y < z)
print("not(x < y < z) is",not(x < y < z))
(x < y and y < z) is True
(x < y or y < z) is True
not(x < y) is False
(x < y < z) is True
not(x < y < z) is False
(13)假设你在运行下列程序时,从控制台输入2、3、6。结果是什么?
x, y, z = eval(input("Enter three numbers:"))
print("sorted" if x < y and y < z else "not sorted')
sorted
解释:这是一个条件表达式,如果x < y 并且y < z这个条件成立那么表达式的值为sorted;否则表达式的值为not sorted
(14)使用if-else语句改写下面的条件表达式。
score = 3 * scale if x > 10 else 4 * scale
tax = income * 0.2 if income > 10000 else income * 0.17 + 1000
print(i if number % 3 == 0 else j)
第一行代码
if x > 10:
score = 3 * scale
else:
score = 4 * scale
第二行代码
if income > 10000:
tax = income * 0.2
else:
tax = income * 0.17 + 1000
第三行代码
if number % 3 == 0: print(i)
else:
print(j)
(15)计算下面的表达式
2 * 2 - 3 > 2 and 4 - 2 > 5
2 * 2 - 3 > 2 or 4 - 2 > 5
2 * 2 - 3 > 2 and 4 - 2 > 5 <=> 1 > 2 and 2 > 5 : False
2 * 2 - 3 > 2 or 4 - 2 > 5 <=> 1 > 2 or 2 > 5: False
二、编程题
(16)解2×2线程方程
题目描述
如有一个2×2的线程方程组:
a x + b y = e c x + d y = f ax+by=e \\ cx+dy=f ax+by=ecx+dy=f
你可以使用克莱姆法则解该线性方程:
x = e d − b f a d − b c , y = a f − e c a d − b c x=\frac{ed-bf}{ad-bc},y=\frac{af-ec}{ad-bc} x=ad−bced−bf,y=ad−bcaf−ec
其中 a d − b c ad-bc ad−bc 为判别式,如果为零则输出无解
输入输出描述
输入a、b、c、d、e、f六个数据,数据之间用空格分隔
输出两行,第一行x的解,第二行y的解,保留一位小数
示例1
输入:
9.0 4.0 3.0 -5.0 -6.0 -21.0
输出:
-2.0
3.0
示例2
输入:
1.0 2.0 2.0 4.0 4.0 5.0
输出:
无解
a, b, c, d, e, f = map(float, input().split(" "))
if a * d - b * c == 0:print("无解")
else:x = (e * d - b * f) / (a * d - b * c)y = (a * f - e * c) / (a * d - b * c)print(x)print(y)
(17)未来是周几
题目描述
输入表示今天是一周内哪一天的数字(星期天是0,星期一是1,…,星期六是6)
并输入今天之后到未来某天的天数,然后输出该天是星期几
输入输出描述
输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔
输出未来某天是星期几
示例1
输入:
1 3
输出:
星期四
示例2
输入:
0 31
输出:
星期三
#输入数据
today, days = map(int, input().split(" "))
result = today + days
#七天为一个轮回
result %= 7
str = " "
if result == 0:str = "星期日"
elif result == 1:str = "星期一"
elif result == 2:str = "星期二"
elif result == 3:str = "星期三"
elif result == 4:str = "星期四"
elif result == 5:str = "星期五"
elif result == 6:str = "星期六"
print(str)
(18)三角形的周长
题目描述
输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法
如果任意两边之和大于第三边则输入都是合法的
输入输出描述
输入三个数据表示三边,数据之间用空格分隔
输出三角形的周长,如果非法则输出非法
示例1
输入:
1 1 1
输出:
3
示例2
输入:
1 3 1
输出:
非法
#输入数据
side1, side2, side3 = map(float, input().split(" "))
#判断边长是否合理
if side1 + side2 > side3 and side1 + side3 > side2 and side3 + side2 > side1:print(f'{(side1 + side2 + side3):.0f}')
else:print("非法")
(19)一周的星期几【录屏讲解】
**视频链接:**录制: 明灯的快速会议
日期: 2025-03-21 13:57:44
录制文件:https://meeting.tencent.com/crm/KzWVAXP823
题目描述
泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几,公式如下:
h = ( q + ⌊ 26 ( m + 1 ) 10 ⌋ + k + ⌊ k 4 ⌋ + ⌊ j 4 ⌋ + 5 j ) % 7 h=(q+\lfloor\frac{26(m+1)}{10}\rfloor+k+\lfloor\frac{k}{4}\rfloor+\lfloor\frac{j}{4}\rfloor+5j) \% 7 h=(q+⌊1026(m+1)⌋+k+⌊4k⌋+⌊4j⌋+5j)%7
(1) h h h是指一周的星期几(0表示星期六、1表示星期天、…、6表示星期五)
(2) q q q是一个月的哪一天
(3) m m m是月份(3表示三月、4表示四月、…、12表示十二月),其中一月和二月都是按照前一年的13月和14月来计数的,所以还得把年份改为前一年
(4) j j j是世纪数,即 ⌊ y e a r 100 ⌋ \lfloor\frac{year}{100}\rfloor ⌊100year⌋
(5) k k k是一个世纪的某一年,即 y e a r % 100 year \% 100 year%100
(6) ⌊ ⌋ \lfloor\rfloor ⌊⌋为向下取整符号
输入输出描述
输入年、月、日三个数据,数据之间用空格分隔
输出该日是周几
示例1
输入:
2013 1 25
输出:
星期五
示例2
输入:
2012 5 12
输出:
星期六
import math
#输入年月日
year, m, q = map(int, input().split(" "))
#对1月和2月进行特殊处理
if m == 1 or m == 2:year -= 1m += 12
#计算世纪
j = year // 100
#公式,计算星期
k = year % 100
h = (q + 26 * (m + 1) / 10 + k + k / 4 + j / 4 + 5 * j) % 7
#取整
h = math.floor(h)
result = ""
if h == 0:result = "星期六"
elif h == 1:result = "星期日"
elif h == 2:result = "星期一"
elif h == 3:result = "星期二"
elif h == 4:result = "星期三"
elif h == 5:result = "星期四"
elif h == 6:result = "星期五"
print(result)
(20) 直线的交点【录屏讲解】
**视频链接:**录制:明灯的快速会议
日期:2025-03-21 14:23:00
录制文件:https://meeting.tencent.com/crm/23V37zn122
题目描述
直线A上的两个点是 ( x 1 , y 1 ) (x1,y1) (x1,y1)和 ( x 2 , y 2 ) (x2,y2) (x2,y2),直线B上的两个点是 ( x 3 , y 3 ) (x3,y3) (x3,y3)和 ( x 4 , y 4 ) (x4,y4) (x4,y4)

如果两条直线有交点,可以通过解下面的线性等式找出:
( y 1 − y 2 ) x − ( x 1 − x 2 ) y = ( y 1 − y 2 ) x 1 − ( x 1 − x 2 ) y 1 ( y 3 − y 4 ) x − ( x 3 − x 4 ) y = ( y 3 − y 4 ) x 3 − ( x 3 − x 4 ) y 3 (y_1-y_2)x-(x_1-x_2)y=(y_1-y_2)x_1-(x_1-x_2)y_1 \\ (y_3-y_4)x-(x_3-x_4)y=(y_3-y_4)x_3-(x_3-x_4)y_3 (y1−y2)x−(x1−x2)y=(y1−y2)x1−(x1−x2)y1(y3−y4)x−(x3−x4)y=(y3−y4)x3−(x3−x4)y3
如果没有解,则表示两条直线平行
输入输出描述
输入八个数据,分别为x1 y1 x2 y2 x3 y3 x4 y4,数据之间用空格分隔
如有交点则输出交点的坐标x y,否则输出两条直线平行
示例1
输入:
2 2 5 -1 4 2 -1 -2
输出:
2.89 1.11
示例2
输入:
2 2 7 6 4 2 -1 -2
输出:
两条直线平行
#输入四个坐标
x1, y1, x2, y2, x3, y3, x4, y4 = map(float, input().split(" "))
#求直线A
a1 = y1 - y2
b1 = - (x1 - x2)
c1 = (y1 - y2) * x1 - (x1 - x2) * y1
#求直线B
a2 = y3 - y4
b2 = - (x3 - x4)
c2 = (y3 - y4) * x3 - (x3 - x4) * y3
#计算行列式
D = a1 * b2 - a2 * b1
#判断两条线的关系
if D == 0:print("两条直线平行")
else:#根据克莱姆法则计算交点坐标x = (b2 * c1 - b1 * c2) / Dy = (a1 * c2 - a2 * c1) / Dprint(f'{x:.2f}, {y:.2f}')
(21)两个矩形【录屏讲解】
**视频链接:**录制: 明灯的快速会议
日期: 2025-03-21 14:41:15
录制文件:https://meeting.tencent.com/crm/29m6px0470
题目描述
判断两个矩形之间的关系:包含,重叠,相离
输入输出描述
输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高
输出两者的关系
示例1
输入:
2.5 4 2.5 43
1.5 5 0.5 3
输出:
包含
示例2
输入:
1 2 3 5.5
3 4 4.5 5
输出:
重叠
示例3
输入:
1 2 3 3
40 45 3 2
输出:
相离
#第一个矩形
x1, y1, w1, h1 = map(float, input().split(" "))
#第二个矩形
x2, y2, w2, h2 = map(float, input().split(" "))
#判断关系
if abs(x1 - x2) <= abs(w1 / 2 - w2 / 2) and abs(y1 - y2 ) <= abs(h1 / 2 - h2 / 2):print("包含")
elif abs(x1 - x2 ) <= abs(w1 / 2 + w2 / 2) and abs(y1 - y2) <= abs(h1 / 2 + h2 / 2):print("重叠")
else:print("相离")