python编程—随机加减乘除运算计算

代码如下:

import random
count = 0
right = 0
while True:
    a = random.randint(0, 9)
    # 作为除数
    b = random.randint(1, 9)
    op = ['+', '-', '*', '//']
    d = random.choice(op)
    print('%d %s %d = ' % (a, d, b))
    question = input('请输入您的答案: (q退出)')
    result1 = a + b
    result2 = a - b
    result3 = a * b
    result4 = a // b
    if question == str(result1):
        print('回答正确')
        right += 1
        count += 1
    elif question == str(result2):
        print('回答正确')
        right += 1
        count += 1
    elif question == str(result3):
        print('回答正确')
        right += 1
        count += 1
    elif question == str(result4):
        print('回答正确')
        right += 1
        count += 1
    elif question == 'q':
        break
    else:
        print('回答错误')
        count += 1

percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%'
          % (count, right, percent * 100))
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以帮你解决这个问题。首先,我们需要使用 Python 的 random 模块来随机生成 1~9 之间的 4 个数,然后使用 itertools 模块中的 permutations 函数来生成这 4 个数的所有排列组合。 代码如下所示: ```python import random import itertools # 生成1~9之间的4个随机数 numbers = random.sample(range(1, 10), 4) # 生成这4个数的所有排列组合 combos = list(itertools.permutations(numbers)) ``` 接下来,我们可以遍历这个排列组合列表,并使用 eval() 函数来计算每个排列组合的值,判断是否等于 24。如果等于 24,则将结果返回。 代码如下所示: ```python # 遍历所有排列组合 for combo in combos: # 遍历所有可能的运算符 for ops in itertools.product('+-*/', repeat=3): # 构造表达式 expression = '{}{}{}{}{}{}{}'.format( combo[0], ops[0], combo[1], ops[1], combo[2], ops[2], combo[3]) # 计算表达式的值 result = eval(expression) # 判断是否等于24 if result == 24: # 如果等于24,则返回结果 return expression ``` 最后,我们可以将这个计算结果显示在 GUI 界面上,并让用户通过键盘的光标键来改变运算符,使等式成立。 代码如下所示: ```python import tkinter as tk class Game: def __init__(self, master): self.master = master self.master.title('24点小游戏') self.master.geometry('300x100') # 生成1~9之间的4个随机数 self.numbers = random.sample(range(1, 10), 4) # 生成这4个数的所有排列组合 self.combos = list(itertools.permutations(self.numbers)) # 初始化游戏界面 self.init_ui() def init_ui(self): # 显示题目 self.label = tk.Label(self.master, text=self.get_question(), font=('Arial', 24)) self.label.pack(pady=10) # 监听键盘事件 self.master.bind('<Left>', lambda event: self.change_operator(event, 0)) self.master.bind('<Up>', lambda event: self.change_operator(event, 1)) self.master.bind('<Right>', lambda event: self.change_operator(event, 2)) self.master.bind('<Down>', lambda event: self.change_operator(event, 3)) def get_question(self): # 遍历所有排列组合 for combo in self.combos: # 遍历所有可能的运算符 for ops in itertools.product('+-*/', repeat=3): # 构造表达式 expression = '{}{}{}{}{}{}{}'.format( combo[0], ops[0], combo[1], ops[1], combo[2], ops[2], combo[3]) # 计算表达式的值 result = eval(expression) # 判断是否等于24 if result == 24: # 如果等于24,则返回结果 self.answer = expression return expression def change_operator(self, event, index): # 获取当前运算符 ops = self.answer[index * 2 + 1] # 根据光标键来改变运算符 if event.keysym == 'Left': ops = '+-'[ops == '+'] elif event.keysym == 'Up': ops = '*/'[ops == '*'] elif event.keysym == 'Right': ops = '+-'[ops == '-'] elif event.keysym == 'Down': ops = '*/'[ops == '/'] # 更新答案 self.answer = self.answer[:index * 2 + 1] + ops + self.answer[index * 2 + 2:] # 更新界面 self.label.config(text=self.answer) if __name__ == '__main__': root = tk.Tk() game = Game(root) root.mainloop() ``` 这样,我们就完成了这个计算 24 点的小程序,并使用 Python 的 GUI 编程实现了它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值