第十三周作业

p301
8.1
from random import random

def printTntro():
print("这个程序模拟两个选手A和B的某种竞技比赛")
print("程序运行需要A和B的能力值(以0到1之间的小数表示)")

def getInputs():
a=eval(input("请输入选手A的能力值(0-1):"))
b=eval(input("请输入选手B的能力值(0-1):"))
n=eval(input("模拟比赛的场次:"))
return a,b,n

def simNGames(n,probA,probB):
winsA,winsB=0,0
for i in range(n):
scoreA,scoreB=simOneGame(probA,probB)
if scoreA>scoreB:
winsA+=1
else:
winsB+=1
return winsA,winsB

def gameOver(a,b):
return (a >= 11 and a - b >= 2) or (b >= 11 and b - a >= 2)

def simOneGame(probA,probB):
scoreA,scoreB=0,0
serving="A"
while not gameOver(scoreA,scoreB):
if serving=="A":
if random() < probA:
scoreA += 1
else:
serving="B"
else:
if random() < probB:
scoreB += 1
else:
serving = "A"
return scoreA,scoreB

def printSummary(winsA,winsB):
n=winsA+winsB
print("竞技分析开始,共模拟{}场比赛".format(n))
print("选手A获胜{}场比赛,占比{:.1%}".format(winsA,winsA/n))
print("选手B获胜{}场比赛,占比{:.1%}".format(winsB,winsB/n))

def main():
printTntro()
probA,probB,n=getInputs()
winsA,winsB=simNGames(n,probA,probB)
printSummary(winsA,winsB)

8.2
from random import random

def printTntro():
print("这个程序模拟两个选手A和B的某种竞技比赛")
print("程序运行需要A和B的能力值(以0到1之间的小数表示)")

def getInputs():
a=eval(input("请输入选手A的能力值(0-1):"))
b=eval(input("请输入选手B的能力值(0-1):"))
n=eval(input("模拟比赛的场次:"))
return a,b,n

def simNGames(n,probA,probB):
winsA,winsB=0,0
for i in range(n):
scoreA,scoreB=simOneGame(probA,probB)
if scoreA>scoreB:
winsA+=1
else:
winsB+=1
return winsA,winsB

def gameOver(a,b):
return a15 or b15

def simOneGame(probA,probB):
scoreA,scoreB=0,0
time_remaining = 48 # 修改点:新增比赛时间,总时间为48分钟
possession = "A" # 修改点:新增变量,表示当前球权

while time_remaining > 0:  # 修改点:新增比赛时间限制
    if possession == "A":
        scoreA += attemptScoring(probA)  # 修改点:调用attemptScoring函数模拟得分
        possession = "B"  # 修改点:球权转移
    else:
        scoreB += attemptScoring(probB)  # 修改点:调用attemptScoring函数模拟得分
        possession = "A"  # 修改点:球权转移
    time_remaining -= 1  # 修改点:每次进攻消耗1分钟

# 修改点:新增加时赛逻辑
while scoreA == scoreB:  # 如果比赛结束时打平,进入加时赛
    scoreA += attemptScoring(probA)
    scoreB += attemptScoring(probB)
    time_remaining -= 1  # 加时赛每次进攻也消耗1分钟

return scoreA, scoreB

def attemptScoring(prob):
# 修改点:新增函数,模拟每次进攻的得分
if random() < prob: # 根据能力值决定是否得分
if random() < 0.5: # 假设三分球的概率为50%
return 3
else:
return 2
else:
return 0

def printSummary(winsA,winsB):
n=winsA+winsB
print("竞技分析开始,共模拟{}场比赛".format(n))
print("选手A获胜{}场比赛,占比{:.1%}".format(winsA,winsA/n))
print("选手B获胜{}场比赛,占比{:.1%}".format(winsB,winsB/n))

def main():
printTntro()
probA,probB,n=getInputs()
winsA,winsB=simNGames(n,probA,probB)
printSummary(winsA,winsB)

main()

8.3
已下载

8.4from direct.showbase.ShowBase import ShowBase
from panda3d.core import *

class MyApp(ShowBase):
def init(self):
ShowBase.init(self)

    # 加载模型
    self.cube = loader.loadModel("models/box")
    self.cube.reparentTo(self.render)

app = MyApp()
app.run()
8.5import networkx as nx
import matplotlib.pyplot as plt

创建一个空的无向图

G = nx.Graph()

添加节点

G.add_nodes_from([1, 2, 3, 4])

添加边

G.add_edges_from([(1, 2), (2, 3), (3, 4), (4, 1)])

绘制图形

pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_size=1500, node_color='skyblue', font_size=10, font_weight='bold', arrows=False)
plt.title("Simple Graph Example")
plt.show()
8.6

8.7
'D:\spyder_lianxi\浮雕效果.jpg'

posted @ 2025-05-25 21:48  南萱  阅读(19)  评论(0)    收藏  举报