目录
一、问答题
(1)怎样生成一个满足条件10 ≤ i ≤ 50的随机整数?
答:
import random
# 生成 10 到 50 之间的随机整数
random_number = random.randint(10, 50)
print(random_number)
(2)如果number分别是30和35,那么a中的代码和b中的代码的输出结果是什么?
# 代码a
if number % 2 == 0:
print(number,"is even.")
print(number,"is odd.")
# 代码b
if number % 2 == 0:
print(number,"is even.")
else
print(number,"is odd.")
答:
a = 30 is even
b = 35 is odd
(3)如果是下面的代码中,假设x=3而且y=2,显示它的结果。如果x=3而且y=4,那么结果是什么?如果x=2而且y=2,那么结果是什么?请为这段代码绘制一个流程图。
if x > 2:
if y > 2:
z = x+y
print("z is”,z)
else:
print("x is",x)
答:分别是 x is 3,z is 7
(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'
答: #没有定义score,没写输出项,应该由大到小的排序,不然只要大于60就会归到D等级, score = float(input("请输入你的分数: ")) if score >= 90.0: grade='A' elif score >= 80.0: grade ='B' elif score >= 70.0: grade ='C' elif score >= 60.0: grade = 'D' else: grade ='F' print(f"你的分数是 {score},对应的等级是 {grade}")
(5)下面的代码有哪些错误?
# 代码A
if i > 0:
x = 0
y = 1
else:
y = 0
z = 0
# 代码B
if i > 0:
x = 0
y = 1
else:
y = 0
z = 0
# 代码C
if i > 0:
x = 0
y = 1
else:
y = 0
z = 0
# 代码D
if i > 0:
x = 0
y = 1
else:
y = 0
z = 0
答:
都存在缩进错误和没有定义i
(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”)
答:
A:
14 is even
15 is multiple of
30 is even 30 is multiple of 5
B:
14 is even
15 is multiple of 5
30 is even
(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
答:这两条语句是等价的。
(8)下面的代码错在哪里?
income = 232323
if income <= 10000:
tax = income *0.1
elif income > 10000 and income <= 20000:
tax = 1000 + (income - 10000) * 0.15
print(tax)
答:两个条件都不满足,所以
tax
变量没有被赋值。在执行print(tax)
时,会引发NameError
。
(9)假设 x=1,显示下面布尔表达式的结果。
True and (3 > 4)
not (x > 0)a nd (x > 0)
(x > 0) or (x < 0)
(x != 0) or (x == 0)
(x >= 0) or (x < 0)
(x != 1) == not (x == 1)
答: True and (3 > 4) False not (x > 0)a nd (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) False
(10)假设 x=4,y=5,显示下面的布尔表达式的结果。
x >= y >= 0
x <= y >= 0
x != y == 5
(x != 0) or (x == 0)
答: 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
(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)
答:
# 改写 score 的条件表达式
if x > 10:
score = 3 * scale
else:
score = 4 * scale
# 改写 tax 的条件表达式
if income > 10000:
tax = income * 0.2
else:
tax = income * 0.17 + 1000
# 改写 print 中的条件表达式
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
答:
print(2 * 2 - 3 > 2 and 4 - 2 > 5) # False,2 * 2 - 3 > 2 为 False,4 - 2 > 5 为 False
print(2 * 2 - 3 > 2 or 4 - 2 > 5) # False,2 * 2 - 3 > 2 为 False,4 - 2 > 5 为 False
二、编程题
(16)解2×2线程方程
题目描述
如有一个2×2的线程方程组:
你可以使用克莱姆法则解该线性方程:
其中 $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六个数据,数据之间用空格分隔
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)
#输出x,y值,保留一位小数
print(f'{x:.1f}')
print(f'{y:.1f}')
(17)未来是周几
题目描述
输入表示今天是一周内哪一天的数字(星期天是0,星期一是1,...,星期六是6)
并输入今天之后到未来某天的天数,然后输出该天是星期几
输入输出描述
输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔
输出未来某天是星期几
示例1
输入:
1 3
输出:
星期四
示例2
输入:
0 31
输出:
星期三
#输入两个数据,分别表示今日星期几的数字和未来某天的天数
week, day = map(int, input().split(" "))
#定义未来为星期几
future_week = (week + day) % 7
#定义星期天是0,星期一是1,...,星期六是6
if future_week == 0:
print("星期日")
elif future_week == 6:
print("星期六")
elif future_week == 5:
print("星期五")
elif future_week == 4:
print("星期四")
elif future_week == 3:
print("星期三")
elif future_week == 2:
print("星期二")
elif future_week == 1:
print("星期一")
(18)三角形的周长
题目描述
输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法
如果任意两边之和大于第三边则输入都是合法的
输入输出描述
输入三个数据表示三边,数据之间用空格分隔
输出三角形的周长,如果非法则输出非法
示例1
输入:
1 1 1
输出:
3
示例2
输入:
1 3 1
输出:
非法
#输入三角形三边的长度
a, b, c = map(int, input().split(" "))
#判断是否任意两边之和大于第三边
if (a + b) > c and (b + c) > a and (a + c) >b:
#计算三角形周长
s = (a + b + c)
#输出三角形周长
print(s)
#不符合三角形合法则计算周长
else:
print("非法数据")
(19)一周的星期几【录屏讲解】
视频链接:https://meeting.tencent.com/crm/ld1mbY3d9e
题目描述
泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几,公式如下:
(1)$h$是指一周的星期几(0表示星期六、1表示星期天、...、6表示星期五)
(2)$q$是一个月的哪一天
(3)$m$是月份(3表示三月、4表示四月、...、12表示十二月),其中一月和二月都是按照前一年的13月和14月来计数的,所以还得把年份改为前一年
(4)$j$是世纪数,即$\lfloor\frac{year}{100}\rfloor$
(5)$k$是一个世纪的某一年,即$year \% 100$
(6)$\lfloor\rfloor$为向下取整符号
输入输出描述
输入年、月、日三个数据,数据之间用空格分隔
输出该日是周几
示例1
输入:
2013 1 25
输出:
星期五
示例2
输入:
2012 5 12
输出:
星期六
#引入数学公式
import math
#输入年,月,日三个数据
year, m, q = map(int, input().split(" "))
#计算月数
if m < 3:
year -= 1
m += 12
#计算世纪数
j = math.floor(year / 100)
#计算世纪的某一年
k = year % 100
#计算一周的星期几
h =(q + math.floor(26 * (m + 1) / 10) + k + math.floor(k / 4) + math.floor(j / 4) + 5 * j) % 7
#定义0表示星期六、1表示星期天、...、6表示星期五
if h == 1:
print("星期天")
elif h== 0:
print("星期六")
elif h == 6:
print("星期五")
elif h == 5:
print("星期四")
elif h == 4:
print("星期三")
elif h == 3:
print("星期二")
elif h == 2:
print("星期一")
(20) 直线的交点【录屏讲解】
视频链接:https://meeting.tencent.com/crm/2YXz1E3Wed
题目描述
直线A上的两个点是$(x1,y1)$和$(x2,y2)$,直线B上的两个点是$(x3,y3)$和$(x4,y4)$
如果两条直线有交点,可以通过解下面的线性等式找出:
如果没有解,则表示两条直线平行
输入输出描述
输入八个数据,分别为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
输出:
两条直线平行
#输入8个数据
x1, y1, x2, y2, x3, y3, x4, y4 = map(int, input().split(" "))
#两直线平行
k = (y1 - y2) * (x3 - x4) - (y3 - y4) * (x1 - x2)
if k == 0:
print("两直线平行")
#两直线相交
else:
x = ((y1 - y2) * (x3 - x4) * x1 - (x1 - x2) * (x3 - x4) * y1 - (y3 - y4) * (x1 - x2) * x3 + (x3 - x4) * (x1 - x2) * y3) / k
y = ((y1 - y2) * (y3 - y4) * x1 - (x1 - x2) * (y3 - y4) * y1 - (y3 - y4) * (y1 - y2) * x3 + (x3 - x4) * (y1 - y2) * y3) / k
#输出x,y 值
print(f'{x:.2f} {y:.2f}')
(21)两个矩形【录屏讲解】
视频链接: https://meeting.tencent.com/crm/2rxWQJqw7f
题目描述
判断两个矩形之间的关系:包含,重叠,相离
输入输出描述
输入两行,每行四个数据,分别是矩形的中心坐标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
输出:
相离
#输入两行,分别是矩形的中心坐标x,y,宽和高
x1, y1, w1, h1 = map(float, input().split(" "))
x2, y2, w2, h2 = map(float, input().split(" "))
#计算大矩形的边界
x1_left = x1 - (w1 / 2)
x1_right = x1 + (w1 / 2)
y1_up = y1 + (h1 / 2)
y1_down = y1 - (h1 / 2)
#计算小矩形的边界
x2_left = x2 - (w2 / 2)
x2_right = x2 + (w2 / 2)
y2_up = y2 + (h2 / 2)
y2_down = y2 - (h2 / 2)
#相离
if x1_right < x2_left and y1_up < y2_down or x1_left > x2_right and y1_down > y2_up:
print("相离")
#包含
elif x1_left <= x2_left and x1_right >= x2_right and y1_up >= y2_up and y1_down <= y2_down:
print("包含")
#剩下的都是重叠
else:
print("重叠")