week4_day6(计算器)

本文主要是实现:计算器的应用,本人历经三天,费了九牛二虎之力,希望大家多多捧场,还有很多功能不完善,正在更新中·····

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # author by lh
 4
 5 import re
 6
 7
 8 # 替换空格,++,--等符号
 9 def rep(s):
10     s = s.replace(‘ ‘, ‘‘)
11     s = s.replace(‘++‘, ‘+‘)
12     s = s.replace(‘+-‘, ‘-‘)
13     s = s.replace(‘--‘, ‘+‘)
14     return s
15
16
17 # 检查是否合法
18 def checkout(s):
19     flag = True
20     if re.findall(‘[a-zA-Z]‘, s):
21         print(‘您可能输入了字母或特殊字符,请重新输入!‘)
22         flag = False
23     return flag
24
25 # 乘除运算
26 def mul_div(s):
27     while re.search(‘\d+\.?\d*[*/]-?\d+\.?\d*‘, s):  # 条件满足时,做乘除
28         ret = re.search(‘\d+\.?\d*[*/]-?\d+\.?\d*‘, s).group()  # 取出乘除表达式
29         x, y = re.split(‘[*/]‘, ret)  # 取出计算的值
30         if ‘*‘ in ret:
31             mul = float(x) * float(y)
32         elif ‘/‘ in ret:
33             mul = float(x) / float(y)
34         s = s.replace(ret, str(mul))  # 计算结果代替旧的表达式
35     return s
36
37 # 加减运算
38 def add_minus(s):
39     while re.search(‘\d+\.?\d*[+-]\d+\.?\d*‘, s):
40         ret = re.search(‘\d+\.?\d*[+-]\d+\.?\d*‘, s).group()
41         x, y = re.split(‘[+-]‘, ret)
42         if ‘+‘ in ret:
43             add = float(x) + float(y)
44         elif ‘-‘ in ret:
45             add = float(x) - float(y)
46         s = s.replace(ret, str(add))
47         s = rep(s)
48     return s
49
50
51 str1 = input(‘请输入您要计算的表达式:‘)
52 str1 = rep(str1)
53 if checkout(str1):
54     while re.search(‘\(‘, str1):  # 找到最后一个括号
55         a = re.search(‘\([^()]+\)‘, str1).group()  # 找到最后一个括号中的表达式
56         n = re.sub(‘[()]‘, ‘‘, a)  # 去括号
57         a1 = mul_div(n)  # 计算乘除
58         str1 = rep(str1)
59         res = add_minus(a1)  # 计算加减
60         str1 = str1.replace(a, res)
61     else:
62         add = mul_div(str1)  # 没有括号时计算乘除
63         a2 = str1.replace(str1, add)  # 计算结果代替旧的表达式
64         str1 = rep(str1)
65         res = add_minus(a2)  # 计算加减
66         str1 = str1.replace(str1, res)
67         str1 = rep(str1)
68         str1 = add_minus(str1)
69 print(str1)
70
71 print(eval(str1))
时间: 2024-11-05 18:33:52

week4_day6(计算器)的相关文章

【自动化__GUI自动化】__java__Windows应用程序识别__计算器

一.代码如下 package www.woniu.gui.one; import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.aw

bzoj2242: [SDOI2011]计算器.

2242: [SDOI2011]计算器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 4353  Solved: 1679[Submit][Status][Discuss] Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数. In

j2ee-JSP之简单计算器

来源韩顺平.j2ee视频实战教程jsp第1讲(下集) -------------------------------------------------------------------------------------------------------- 简单计算器,可以控制输入的数(仅第一个数)不能为空且不能为字符串 myCal.jsp代码 1 <!--这是计算器的界面 --> 2 <!-- 可以控制输入的数不能为空且不能为字符串 --> 3 <%@ page co

通过键盘接收数值和字符,实现计算器功能。

import java.util.Scanner; /** * @author 蓝色以太 * 通过键盘接收数值和字符,实现计算器功能. */ public class Calculator { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入第一个数值:"); double num1=sc.nextDouble(); System.out

Android计算器APP练习(1)--- 界面

Android Studio 2.3.2 .参考文章:http://blog.csdn.net/like_program/article/details/51813632 1. 新建工程 MyCalculator,一路下一步,均采用默认值. 2. 按照要求修改三个xml文件内容.很多地方工程名字不一样,改成自己的名字. 3. 按照步骤修改Activity_main.XML文件,遇到问题: android:singleLine="false" 过时 暂时处理方式:删掉此行. 4. 按照步

一个简单的税利计算器(网页版)

嗯嗯,做一个简单的网页版的税率计算器,功能比较简单,但是相对比较实用.因为参考了一些其他作品,所以在计算汇率的时候习惯性的是以美元做单位.具体的功能有着较为详细的标注.仅供大家学习参考下. <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>JavaScript Loan Calculator</title>

反转波兰计算器

#include <iostream>using namespace std;typedef double stackEntry; const int overflow = 1;const int underflow = 2;const int success = 0; const int maxstack = 100;//栈的最大尺寸class stack{public: stack(); int pop(); int push(const stackEntry &item); in

JAVA编写的简单计算器

package com.hellojava.practice.test; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; impo

winform与面向对象应用做一个计算器12月28日

代码部分: public partial class 计算器 : Form { public 计算器() { InitializeComponent(); } private double sum = 0;//存放运算结果 private string biaodashi="";//用于存放除了刚点过的运算符的前面表达式部分 private string preyunsuanfu="";//用来存放上一步运算符,用于下次点运算符的时候算上一步的结果 private