python复习题
本文最后更新于:2023年2月22日 下午
Python复习题
1、用if分支结构完成程序设计(三选一):
输入成绩,查询等级(90分及以上优秀、60-89合格、低于60不合格)
score = int(input("Scroe:")) if score >= 90 and score <= 100: print("优秀") elif score >= 60 and score < 90: print("合格") elif score >= 0 and score < 60: print("不合格") else: print("Score must in 0-100")
输入年龄,查询公园门票价格(70岁以上老人免票,18岁以下儿童及60岁以上半票,18岁以上全价)
while(True): age = input("请输入年龄:") age = float(age) if age >= 70: print("免票") elif 60 < age < 70 or 0 < age < 18: print("半票") elif 18 <= age <= 60: print("全价") else: print("年龄不合法")
输入身高、体重,查询健康情况(BMI=体重(kg) /身高(m)的平方低于18.5偏瘦; 18.5-24 正常,超过24偏胖,超过28肥胖)
# 输入身高、体重 height = float(input("请输入身高(m):")) weight = float(input("请输入体重(kg):")) # BMI = 体重(kg)/ 身高(m)的平方 BMI = weight / float(height) ** 2 # 低于18.5 偏瘦 if BMI < 18.5: print("偏瘦") # 18.5-24 正常 elif 18.5 <= BMI <= 24: print("正常") # 超过24偏胖 elif 24 < BMI <= 28: print("偏胖") # 超过28肥胖 elif BMI > 28: print("肥胖")
2、编程完成(三选一):
求1-100范围内所有3的倍数的和。如3+6+9+…
sum = 0 for i in range(1, 101): if i % 3 == 0: sum += i print("result:" , sum) # 另法:用步长 ans = 0 for i in range(0, 101, 3): ans = ans + i print(ans) # 另法:用sum print(sum(list(range(3, 101, 3))))
一个数如果恰好等于它的因子(不包含自身)之和,则称之为”完数”。 例如6=1+2+3。编程找出100以内的所有完数并输出。
for i in range(0, 101): sum = 0 for n in range(1, i): if i % n == 0: sum += n if(i == sum): print(i) # 0 6 28
输出100以内的质数
for i in range(2,100): num = 0 for j in range(2, i): if i % j == 0: num += 1 if num == 0: print(i) num = 0 # 25个 # 另法:用break for a in range(2, 101): for b in range(2, a): if a % b == 0: break else: print(a)
3、编程完成(三选一):
己知字符串s= ‘AbcDeFGhIJkmN’, 请计算该字符串中小写字母的数量。
s= 'AbcDeFGhIJkmN' num = 0 for i in s: if i.islower(): num += 1 print(num) # 7
检查字符串”Life is short. I use python.”中是否包含字符串”python”,若包含则替换为 “Python”后输出新字符串,否则输出原字符串。
s = "Life is short. I use python" if s.find("python") != -1: print(s.replace("python", "Python")) else: print(s)
把“HAPPY BIRTHDAY”改成“Happy Birthday” 并输出。
s = "HAPPY BIRTHDAY" print(s.title()) # Happy Birthday
4、编程实现(三选一):
定义一个三角形类,输入三条边,判断能否构成三角形,如果能,计算并输出三角
形的面积,否则返回0。假设三角形三条边分别为a、 b、c,则周长的一半s=(a+ b
+c)/2,面积area=√s*(s-a)*(s-b)*(s-c)。
class triangle:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
self.s = (a + b + c) / 2
def canTri(self, a, b, c) -> bool:
return a + b > c and b + c > a and a + c > b
def getArea(self, a, b, c) -> float:
s = self.s
return pow(s * (s - a) * (s - b) * (s - c), 0.5)
def getRes(self) -> float:
if self.canTri(self.a, self.b, self.c):
return self.getArea(self.a, self.b, self.c)
else:
return 0
tri = triangle(3, 4, 5)
print(tri.getRes())
5、逄7拍手游戏
for i in range(1, 100):
if i % 7 == 0 or "7" in str(i):
print("拍手")
else:
print(i)
# 30 次
6、菲波拉契数列前15项,例如: 0 1 1 2 3 5 8 13 21 … (递归兔子序列)
def sum(a):
if a == 0:
return 0
if a == 1:
return 1
return sum(a - 1) + sum(a - 2)
for i in range(15):
print(sum(i))
7、重写加减乘除运算符合
class MyNumber:
def __init__(self, v) -> None:
self.data = v
def __add__(self, other):
v = self.data + other.data
return MyNumber(v)
def __sub__(self, other):
v = self.data - other.data
return MyNumber(v)
def __mul__(self, other):
return MyNumber(self.data * other.data)
def __truediv__(self, other):
return MyNumber(self.data / other.data)
def __str__(self):
return str(self.data)
n1 = MyNumber(100)
n2 = MyNumber(200)
print(n1 + n2) # 300
print(n1 - n2) # -100
print(n1 * n2) # 20000
print(n1 / n2) # 0.5
9、重写两个点坐标的比较符
"""
比较算术运算符的重载:
方法名 运算符和表达式 说明
__lt__(self,rhs) self < rhs 小于
__le__(self,rhs) self <= rhs 小于等于
__gt__(self,rhs) self > rhs 大于
__ge__(self,rhs) self >= rhs 大于等于
__eq__(self,rhs) self == rhs 等于
__ne__(self,rhs) self != rhs 不等于
"""
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, p):
return Point(self.x + p.x, self.y + p.y)
def __sub__(self, p):
return Point(self.x - p.x, self.y - p.y)
def __lt__(self, p):
return ((pow(self.x, 2) + pow(self.y, 2)) - (pow(p.x, 2) + pow(p.y, 2))) < 0
def __str__(self):
return f"({self.x},{self.y})"
p1 = Point(3, 4)
p2 = Point(1, 2)
p3 = p1 + p2
p4 = p1 - p2
print(p3) # (4,6)
print(p4) # (2,2)
print(p1 < p2) # False
10、编程,为二次方程式ax2+bx+c=0设计一个名Equation 的类,判别方程有无实数解,并求解。
class Equation(object):
def __init__(self, a, b, c):
self.a = float(a)
self.b = float(b)
self.c = float(c)
self.e = self.b**2 - (4 * self.a * self.c)
def getRes(self):
a, b, c, e = self.a, self.b, self.c, self.e
if e < 0:
print("无解")
elif e == 0:
print(-b / 2 * a)
else:
print(f"x1 = {(-b-pow(e,0.5))/(2*a)} , x2 = {(-b+pow(e,0.5))/(2*a)}")
a = input("输入二次项系数")
b = input("输入一次项系数")
c = input("输入常数项系数")
equation = Equation(a, b, c)
equation.getRes()
- 定义学生类,包括姓名、年龄、成绩(语文,数学,英语)等属性,包括获取姓名getName。获取年龄getAge、获取3门成绩最高分和平均分(保留小数点后2位)getScore等成员方法。
class Student:
def __init__(self, name, age, *score):
self.__name = name
self.__age = age
self.__score = score
def getName(self):
return self.__name
def getAge(self):
return self.__age
def getScore(self):
print(f"最高分:{max(self.__score):.2f}")
print(f"平均分:{sum(self.__score)/len(self.__score):.2f}")
student1 = Student("yorick", 22, 98, 88, 78)
print(student1.getName())
print(student1.getAge())
student1.getScore()
12 . 定义一个圆类,包括半径属性,以及求面积和求周长两个方法,并创建2个圆对象,
分别求其面积和周长。
import math
class Circle:
def __init__(self, radius):
self.radius = radius
def getCircumference(self):
return 2 * math.pi * self.radius
def getArea(self):
return math.pi * self.radius**2
circle1 = Circle(4)
print(circle1.getCircumference())
print(circle1.getArea())