当前位置:首页>python>23.Python实战__棋盘放麦子

23.Python实战__棋盘放麦子

  • 2026-10-11 08:14:04
23.Python实战__棋盘放麦子
    相信咱们都听过这么一个故事,一位国王要奖励国际象棋发明者,奖励方法是在棋盘上每一个格子都放上麦子,第一格放1个,第二格放2个,第三格放4个,第四格放 8个,后面的格子中的数量都是上一个格子是2倍,共64个格子;国王随口就答应下来了,直到最后才发现,放满整个棋盘需要的麦子数量惊人;今天咱们就用Python来算算,放满棋盘需要多少麦子。
假设1kg麦子20000粒,计算结果如下   
    计算所需麦子总量是9223.3亿吨,中国的年粮食总产量约7亿吨,大约需要1317年的粮食总量才能把棋盘填满,我擦,以前没算过,这一算太TMD吓人了,这国王要是知道需要这么多粮食,这打死也不能随口答应啊,哈哈哈哈。
下面附上代码:
一、先是导入常用GUI模块的控件
from PySide6.QtCore import Qtfrom PySide6.QtWidgets import QWidget, QApplication,      QPushButton, QGridLayout, QLabel, QLineEdit
二、创建类和初始化方法,在初始化方法中,设置窗口标题,设置窗口尺寸、创建网格布局、设置布局间距等等,都是通用的设置,跟前几个案例是一样的。
class Window(QWidget):      def __init__(self):            super().__init__()            self.setWindowTitle("计算棋盘上麦子总量")            self.resize(350, 210)            # 创建网格布局            self.main_layout = QGridLayout()            # 设置网格布局为主布局            self.setLayout(self.main_layout)            # 设置布局的水平和垂直间隔距离            self.main_layout.setHorizontalSpacing(15)            self.main_layout.setVerticalSpacing(15)            # 设置各列的宽度            self.main_layout.setContentsMargins(20, 20, 15, 0)            self.main_layout.setColumnStretch(0, 1)            self.main_layout.setColumnStretch(1, 3)            self.main_layout.setAlignment(Qt.AlignTop)            self.setup_01()
三、创建setup_01实例化方法,在实例化方法中创建控件,并添加到网格布局中
def setup_01(self):      # 创建三条边标签和输入框      self.label_01 = QLabel("1kg麦子个数", self)      self.line_01 = QLineEdit("20000", self)      self.label_02 = QLabel("麦子总个数", self)      self.line_02 = QLineEdit(self)      self.label_03 = QLabel("麦子总量 (万吨)", self)      self.line_03 = QLineEdit(self)      # 创建计算按钮      self.btn = QPushButton("计 算", self)      self.btn.clicked.connect(self.calculate)      # 使用for循环使控件文字都居中显示      widgets = [self.line_01, self.line_02, self.line_03]      for widget in widgets:            widget.setAlignment(Qt.AlignmentFlag.AlignCenter)      # 把上面控件添加到网格布局      # 1kg麦子的个数      self.main_layout.addWidget(self.label_01, 0, 0)      self.main_layout.addWidget(self.line_01, 0, 1)      # 麦子总数量      self.main_layout.addWidget(self.label_02, 1, 0)      self.main_layout.addWidget(self.line_02, 1, 1)      # 麦子总重量      self.main_layout.addWidget(self.label_03, 2, 0)      self.main_layout.addWidget(self.line_03, 2, 1)      # 把计算按钮添加到布局      self.main_layout.addWidget(self.btn, 3, 0, 1, -1)
四、创建上面计算按钮的 槽函数,也是程序中最重要的部分
def calculate(self):      # 先计算麦子总数 total      total = 0      for i in range(1, 65):            f = 2**(i-1)       # 每格中的麦子个数           total = total + f        self.line_02.setText(str(total))      # 拿到输入框内的数据  # 1kg麦子个数 a      a = float(self.line_01.text())      # 麦子总数为 t (换算成万吨)  t = total/(a*1000*10000)      # 保留1位小数  t = round(t, 1)      self.line_03.setText(str(t))
    大家有空了,可以自己敲敲上面的代码自己试试啊,有什么感兴趣或见解,大家可以一块留言沟通。

最新文章

随机文章