Python基础

目录

一、问答题

二、编程题

(16)解2×2线程方程

(17)未来是周几

(18)三角形的周长

(19)一周的星期几【录屏讲解】

(20) 直线的交点【录屏讲解】

(21)两个矩形【录屏讲解】


一、问答题

(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)$

image-20250314093527261

如果两条直线有交点,可以通过解下面的线性等式找出:

如果没有解,则表示两条直线平行

输入输出描述

输入八个数据,分别为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

题目描述

判断两个矩形之间的关系:包含,重叠,相离

image-20250314093616278

输入输出描述

输入两行,每行四个数据,分别是矩形的中心坐标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("重叠")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值