python自动生成加减乘除计算最简单代码

import random

count = 0
right = 0
while True:
    a = random.randint(1, 11)
    b = random.randint(1, 11)
    dict = [["%d+%d=" % (a, b), a + b], ["%d-%d=" % (a, b), a - b], ["%d*%d=" % (a, b), a * b],
            ["%d/%d=" % (a, b), a // b]]
    i = random.randint(0, 3)
    num = input("%s? input your answer[q exit]" % (dict[i][0]))
    if num == "q":
        break
    elif int(num) == dict[i][1]:
        count += 1
        right += 1
        print("right")
    else:
        count += 1
        print("wrong")
if count != 0:
    print("total is %d\nright nums is %d\n right rate is %d\n" % (count, right, right / count))
else:
    print("Loser are you!")

好的,您想了解编译原理实践实现加减乘除的内容,我可以为您提供一些相关的知识点和代码示例。 首先,加减乘除是四则运算中的基本运算,实现这些运算需要进行词法分析、语法分析、语义分析和代码生成等多个步骤。 以下是一个简单的加减乘除计算器的代码示例,实现了加减乘除四种运算: ```python # -*- coding: utf-8 -*- """ 运算符优先级的加减乘除计算器 """ # 定义运算符优先级字典 precedence = { '+': 1, '-': 1, '*': 2, '/': 2, } # 定义一个函数,用于计算两个数的加减乘除运算 def calculate(op, num1, num2): if op == '+': return num1 + num2 elif op == '-': return num1 - num2 elif op == '*': return num1 * num2 elif op == '/': return num1 / num2 # 定义一个函数,用于实现运算符优先级的计算 def evaluate(tokens): # 定义两个栈,分别用于存储数字和运算符 num_stack = [] op_stack = [] # 遍历输入的符号序列 for token in tokens: if token.isdigit(): # 如果是数字,直接入栈 num_stack.append(int(token)) else: # 如果是运算符 while op_stack and precedence[op_stack[-1]] >= precedence[token]: # 如果栈顶运算符优先级大于等于当前运算符,进行计算 num2 = num_stack.pop() num1 = num_stack.pop() op = op_stack.pop() result = calculate(op, num1, num2) num_stack.append(result) # 将当前运算符入栈 op_stack.append(token) # 处理剩余的运算符 while op_stack: num2 = num_stack.pop() num1 = num_stack.pop() op = op_stack.pop() result = calculate(op, num1, num2) num_stack.append(result) # 返回最终结果 return num_stack[0] # 测试 tokens = ['3', '+', '4', '*', '2', '-', '1'] result = evaluate(tokens) print(result) # 输出 10 ``` 以上代码中,我们使用两个栈分别存储数字和运算符,遇到数字直接入数字栈,遇到运算符则进行优先级比较,如果栈顶运算符的优先级大于等于当前运算符,则进行计算,否则将当前运算符入栈。 最后,处理完所有的运算符后,数字栈中剩余的数字即为最终结果。 希望这个示例能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值