实验内容

1.简单计算器的设计
请设计简单的“加减乘除”计算器并从键盘上输入数据进行计算

数字的加减乘除,input返回的结果是str类型的,通过截取字符串中的运算符,来提取数字,循环操作,返回结果。具体操作步骤在代码的注释里。

def add(string):  # 定义加法
tmp = 0
numbers = []
numbers += string.split("+") # 对用户输入的数字以+号做分割,写入到列表里。
for i in numbers: # 遍历列表。
tmp += int(i.strip()) # 先对遍历的对象i,去除空格后,得出结果tmp = i + tmp
print("{0} = {1}".format(string, tmp)) # 打印结果tmp def subtraction(string): # 定义减法
numbers = []
numbers += string.split("-") # 对用户输入的数字以-号做分割,写入到列表里。
tmp = int(numbers[0].strip()) # 取列表的第一个数字给tmp
numbers.pop(0) # 因为第一个值给了tmp 所以删除第一个值。
for i in numbers: # 遍历numbers
tmp -= int(i.strip()) # 得出结果tmp ,每次循环都删除第一个值然后相减。
print("{0} = {1}".format(string, tmp)) def multiplication(string): # 定义乘法
numbers = []
numbers += string.split("*") # 对用户输入的数字以*号做分割,写入到列表里。
tmp = int(numbers[0].strip()) # 取列表的第一个数字给tmp
numbers.pop(0) # 因为第一个值给了tmp 所以删除第一个值。
for i in numbers: # 遍历numbers
tmp *= int(i.strip()) # 得出结果tmp ,每次循环都删除第一个值然后相乘。
print("{0} = {1}".format(string, tmp)) def division(string): # 定义除法
numbers = []
numbers += string.split("/") # 对用户输入的数字以/号做分割,写入到列表里。
tmp = int(numbers[0].strip()) # 取列表的第一个数字给tmp
numbers.pop(0) # 因为第一个值给了tmp 所以删除第一个值。
for i in numbers: # 遍历numbers
tmp /= int(i.strip()) # 得出结果tmp ,每次循环都删除第一个值然后相除。
print("{0} = {1}".format(string, tmp)) if __name__ == '__main__': # 定义执行方式,当执行脚本本身,执行如下代码。
print("******************************")
print(" 计算器")
print("******************************")
chose = input("选择你要的计算方式,1/加法 ,2/减法,3/乘法,4/除法: ")
if chose == "1":
tmp = input("请输入你要计算的数字:")
add(tmp)
elif chose == '2':
tmp = input("请输入你要计算的数字:")
subtraction(tmp)
elif chose == '3':
tmp = input("请输入你要计算的数字:")
multiplication(tmp)
elif chose == '4':
tmp = input("请输入你要计算的数字:")
division(tmp)
else:
print("你输入的有误,请重新输入")

测试结果:




如果不按要求输入会提示错误

python3实现计算器的更多相关文章

  1. python3.5 + PyQt5 +Eric6 实现的一个计算器

    目前可以实现简单的计算.计算前请重置,设计的时候默认数字是0,学了半天就做出来个这么个结果,bug不少. python3.5 + PyQt5 +Eric6 在windows7 32位系统可以完美运行 ...

  2. 从零开始学习PYTHON3讲义(十一)计算器升级啦

    (内容需要,本讲中再次使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客.) <从零开始PYTHON3>第十一讲 第二讲的时候,我们通过Python的交互模式来 ...

  3. 从零开始学习PYTHON3讲义(二)把Python当做计算器

    <从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找ID ...

  4. python3 正则表达式 re模块之辣眼睛 计算器

    额...学到几个常用模块了,也要其中考试了,每天晚上敲一点,敲得脑壳疼,不过又想到好一点的办法了,有时间再改吧. 此非吾所欲也,实属无奈也....复习之路漫漫,吾将到书上求索,在此不多逗留,我挥一挥衣 ...

  5. Python3 基本数据类型

    Python中的变量不需要声明,每个变量使用前必须赋值,变量赋值后才会被创建,在Python中变量就是变量,它没有类型.我们所说的"类型"是变量所指的内存中对象的类型. 等号(=) ...

  6. python之计算器(第四天)

    作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后 ...

  7. 用Python3实现表达式求值

    一.题目描述 请用 python3 编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描 ...

  8. Python全栈--6.1-match-search-findall-group(s)的区别以及计算器实例

    match.search.findall.group(s) 区别 import re # match findall经常用 # re.match() #从开头匹配,没有匹配到对象就返回NONE # r ...

  9. python 编程之计算器

    作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后 ...

随机推荐

  1. MySQL技术内幕InnoDB存储引擎(四)——表相关

    表是什么? 就是关于特定实体地数据集合,是关系型数据库模型地核心. 索引组织表 什么是索引组织表? 表中数据都是根据主键的顺序组织存放的,这种存储方式就是索引组织表.就是存储在一个索引结构中的表. 也 ...

  2. Vue:对axios进行简单的二次封装

    主要做3点: 1.配置一个请求地址前缀 2.请求拦截(在请求发出去之前拦截),给所有的请求都带上 token 3.拦截响应,遇到 token 不合法则报错 // 对 axios 的二次封装 impor ...

  3. 微信小程序日期转换、比较、加减

    直接上干货: 在utils目录下新建一个dateUtil.js,代码如下:(在需要用的地方引入这个js,调用相关方法传入对应参数就可以使用了) 该工具脚本,实用性很高,通用于各类前端项目,熟悉后亦可以 ...

  4. router.push query 路由 跳转 传参使用

    this.$router.push({path:'/shop',query:{ goods_name:goods_name, goods_price:goods_price, uid:goods_pr ...

  5. 工具-Redis-介绍(99.6.1)

    @ 目录 1.nosql介绍 2.Redis特性 3.redis应用场景 关于作者 1.nosql介绍 not only sql,不支持SQL语法.存储结构跟传统关系型数据库中的那种关系表完全不同,n ...

  6. SpringCloud 的版本问题 (深入)

    学过SpringCloud 的 同学 ,就应该知道,SpringCloud是一个生态 . Spring Cloud是一个由众多独立子项目组成的大型综合项目,每个子项目都维护着自己的发布版本号.Spri ...

  7. 死磕以太坊源码分析之downloader同步

    死磕以太坊源码分析之downloader同步 需要配合注释代码看:https://github.com/blockchainGuide/ 这篇文章篇幅较长,能看下去的是条汉子,建议收藏 希望读者在阅读 ...

  8. asp.net url参数中有中文request.querystring 乱码

    说明: 从这点我们发现:所有的参数输入,都调用了一次:HttpUtility.UrlDecode(str2, encoding); 结论出来了: 当客户端js对中文以utf-8编码提交到服务端时,用R ...

  9. .netcore 微服务快速开发框架 Anno&Viper 注册中心 (服务上线下线预警通知)

    1.微服务时代,服务上线先预警通知 在微服务大行其道的今天,相信很多人都用上了微服务或者是微服务的概念也已经有了一个深刻的了解.今天我们不在这里展开阐述,今天我们要说的是微服务伴侣预警通知. 2.注册 ...

  10. Sentinel滑动窗口算法

    在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的责任链,搞清楚了这个,基本就已经梳理清楚sentinel-core模块的大部分内容,顺着这条链路可以继续梳理很多东西. 知其然.知 ...