当前位置:   article > 正文

Python用Tkinter实现体育竞技分析_python借鉴实例15的思路,采用篮球规则模拟比赛,分析体育竞技规律。

python借鉴实例15的思路,采用篮球规则模拟比赛,分析体育竞技规律。

Tkinter实现体育竞技分析

以下为代码实现:

整体思路比较简单,主要是体育竞技分析tkinter的实现,请读者结合注释观看即可!

  1. from tkinter import *
  2. import tkinter as tk
  3. import random
  4. def tc(): # 退出函数
  5. quit(0)
  6. root=Tk()
  7. root.title('乒乓球竞技分析模拟系统')
  8. root.geometry("600x300+450+150")
  9. # 球员A
  10. label=Label(root,text="请输入球员A的能力值:",font=(14),fg="black").place(x=45, y=40)
  11. entry1 = tk.Entry(root,width=25)
  12. entry1.place(x=300, y=40)
  13. # 球员B
  14. label=Label(root,text="请输入球员B的能力值:",font=(14),fg="black").place(x=45, y=90)
  15. entry2 = tk.Entry(root,width=25)
  16. entry2.place(x=300, y=90)
  17. # 开始比赛
  18. label =Label(root,text='请输入要模拟的比赛场次:', font=(14),fg="black").place(x= 45,y= 140)
  19. entry3 = tk.Entry(root,width=25)
  20. entry3.place(x=300, y=140)
  21. def main():
  22. aes = entry1.get() # 将输入的数据取出使用
  23. datea = float(aes)
  24. azs = entry2.get()
  25. dateb = float(azs)
  26. acc = entry3.get()
  27. n = int(acc)
  28. winsA, winsB = 0, 0 # 初始化AB的胜场数
  29. for i in range(n):
  30. scoreA, scoreB = 0, 0 # 初始化AB的得分
  31. first = random.randint(0, 2) # 随机发球
  32. while not (scoreA == 11 or scoreB == 11): # 用while循环来执行比赛,先赢够11球胜利
  33. if first == 0:
  34. if random.random() < datea: # random() 方法返回随机生成的一个实数,它在[0,1)范围内。
  35. scoreA += 1 # 用随机数来和能力值比较从而分出胜负
  36. else:
  37. first = 1
  38. else:
  39. if random.random() < dateb:
  40. scoreB += 1
  41. else:
  42. first = 0
  43. if scoreA > scoreB: # 先得够11分者赢一局
  44. winsA += 1
  45. else:
  46. winsB += 1
  47. root2=tk.Tk() # 数据在新窗口上打印
  48. root2.title('比赛结果')
  49. root2.geometry("500x200+500+200")
  50. lable=Label(root2, text='模拟的比赛结果如下:', font=(30))
  51. lable.pack()
  52. lable=Label(root2, text='竞技分析开始,共模拟{}场比赛'.format(n),font=(22),fg='purple')
  53. lable.pack()
  54. lable=Label(root2, text='选手A获胜{}场比赛,占比{:.3f}%'.format(winsA, winsA / n *100),font=(22),fg='purple')
  55. lable.pack()
  56. lable=Label(root2, text='选手B获胜{}场比赛,占比{:.3f}%'.format(winsB, winsB / n *100),font=(22),fg='purple')
  57. lable.pack()
  58. tk.Button(root2, text='退出', command=tc, font=(15)).pack()
  59. button = tk.Button(root,text='开始模拟比赛',command=main,width=10,height=2).place(x=200,y=230)
  60. button = tk.Button(root,text='退出',command=tc,width=5,height=2).place(x=350,y=230)
  61. root.mainloop()

    由于函数分块导致entry输入的数据只能为‘str’类型,故无法使用相关数据进行计算(也可能是我还没找到比较合适的处理方法),目前找到的对策是在button引用的command函数里可以实现对数据的强制转换,从而实现后面的数据运算。

    整体结构不难,由于笔者嫌麻烦就没有再把函数分装了,因为中间把函数分块后发现数据的引用变麻烦了,所以索性把所有功能放在button的引用函数里。也只是课程的一个小实验,故也没有页面美化加图片之类的操作0.0~~

下面是运行结果示意:

7123bd3a73cb4d4ebcc9f97b76da4599.png

c568fabfd4d74114afa770d95c86b28b.png 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42614
推荐阅读
相关标签
  

闽ICP备14008679号