第五天的题目,问题后面跟着代码。
1、使用面向对象计算两点距离,可声明点类,初始化两个点,计算公式欧氏距离即可。
import math
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def distance_to(self, other_point):
return math.sqrt((self.x - other_point.x) ** 2 + (self.y - other_point.y) ** 2)
# 初始化两个点
point1 = Point(1, 2)
point2 = Point(4, 6)
# 计算并输出两点之间的距离
distance = point1.distance_to(point2)
print(f"Distance between the points: {distance}")
2、游戏开始,初始状态下用户和电脑都有 100 分,赢一局+10 分,输一局-10 分。
当用户为 0 分时,游戏结束,提示游戏结束,比赛输了
当用户为 200 分时,游戏结束,提示游戏结束,赢得比赛、每轮比赛都输出当前的分数
1 代表剪刀 2 代表石头 3 代表布
import random
mark = -100
while mark != 0 or mark != 200:
ji_num = random.randint(1, 3)
re_num = int(input('1 代表剪刀 2 代表石头 3 代表布\n'))
if ji_num == re_num:
print("平了.分数: ", mark)
elif ji_num == 1:
if re_num == 2:
mark += 10
print("赢了.分数: ", mark)
elif re_num == 3:
mark -= 10
print("输了.分数: ", mark)
elif ji_num == 2:
if re_num == 1:
mark -= 10
print("输了.分数: ", mark)
elif re_num == 3:
mark += 10
print("赢了.分数: ", mark)
elif ji_num == 3:
if re_num == 1:
mark += 10
print("赢了.分数: ", mark)
elif re_num == 2:
mark -= 10
print("输了.分数: ", mark)
if mark <= 0:
print("你输了比赛,游戏结束")
break
if mark >= 200:
print("你赢了比赛,游戏结束")
break
3、
# 读取输入的两个整数 m 和 n,表示需要找到的第 m 个和第 n 个素数
m, n = map(int, input().split())
# 初始化素数计数器和素数列表
i = 2
acc = 0
num = []
# 使用循环从 2 开始检查每个数是否为素数,直到找到第 n 个素数
for i in range(2, 125000):
# 使用嵌套循环检查 i 是否为素数
# 如果 i 可以被 j 整除 (除了 1 和 i 本身),则 i 不是素数
j = 2
for j in range(2, i):
if i % j == 0:
break
else:
# 如果没有找到可以整除 i 的 j,则 i 是素数
num.append(i) # 将素数添加到 num 列表
acc += 1 # 递增素数计数器
if acc > n: # 如果已找到的素数数量超过 n,则停止搜索
break
# 重置素数计数器用于输出
acc = 0
# 输出从第 m 个到第 n 个素数
for i in range(m - 1, n):
acc += 1 # 递增输出计数器
if i == n - 1:
# 如果当前素数是最后一个要输出的素数,直接输出并换行
print(num[i])
break
# 否则,输出素数并在同一行内添加空格
print(num[i], end=' ')
# 每输出 10 个素数后换行,并输出当前素数
if acc % 10 == 0:
print(num[i])