正式练习的第一个Python功能:加法计算

news2024/9/24 23:23:23

        我本身有着C/C++的功底,最近开始自学python,包括网上找教程,买书看。不确定我这种有其他编程语言经验的再学新的语言算不算零基础,总之书就买的《零基础学Python程序设计》。鉴于自己之前已经看过一段时间,这个程序也就不能真的当自己是新手一样写了。各种花里胡哨的操作也是要尝试着加进去的。

        今天做的是书上的一个习题:加法计算题。接收用户输入的两个数,对这两个数进行相加运算,并输出计算结果。

        先看题目,意思很简单就是接收两个数字并输出,主要就是input和print的使用。然后还需要注意几个问题:

1.在python3中input接收的输入类型是string类的,不是真数字。如果只是单纯的相加,会变成字符串的拼接。像这样:

##输入两个数,返回两数相加结果
str1 = input("请输入第一个数:")
str2 = input("请输入第二个数:")
print(str1, "+", str2, "=", str1+str2)

得到结果:

2.如果误输入了不是数字的字串,应该有检查和重输机制。

这就需要将输入的字串检查以及类型转换。

一、

先是第一版的code:

##输入两个数,返回两数相加结果
str1=input("请输入第一个数:")
while(str1.isdigit()==False):
    str1 = input("输入有误,请重新输入数字:")

str2=input("请输入第二个数:")
while(str2.isdigit()==False):
    str2 = input("输入有误,请重新输入数字:")

print("%s + %s = "%(str1, str2), eval(str1)+eval(str2))

先是报错机制,这种简单的函数就不谈异常抛出机制了,我想让他检测到错误时能重来而不是报错退出,就是用了循环机制,这里如果在c里面可以用do-while()实现,但Python没有这个用法。

然后是检查输入的方法,先到网上搜了一下Python怎么判断是数字的,然后找到了几个函数

str = raw_input("please input the number:")

if str.isdigit():

为True表示输入的所有字符都是数字,否则,不是全部为数字

str为字符串
str.isalnum() 所有字符都是数字或者字母
str.isalpha() 所有字符都是字母
str.isdigit() 所有字符都是数字
str.islower() 所有字符都是小写
str.isupper() 所有字符都是大写
str.istitle() 所有单词都是首字母大写,像标题
str.isspace() 所有字符都是空白字符、\t、\n、\r

于是就有了以上第一版的code,然后整型数可以输入了,非正常输入可以检查并重新输入了。

二、

以上是初步的实现,测试过程引发了一个问题,string.isdigit()这个函数不认小数点的,于是输入小数也成了误输入了。现在要求输入可以是整数,小数,不能带与数字无关的字符。于是再从输入的类型检查方面入手看看怎么改。

##输入两个数,返回两数相加结果

def input_num():
    num = input('请输入一个数 : ')
    while True:
        if num.replace('.', '', 1).isdigit():
            return eval(num)
        num = input("输入有误,请重新输入数字:")

        
num1=input_num()
num2=input_num()
print(num1, "+", num2, "=", num1+num2)

从网上找到大神留下的方法稍微修改了下,顺便膜拜一下大神对于replace这个函数的精巧用法。小数可以接收了。

 三、

以上的code也还不能处理负数以及科学计数法表示的数,这个怎么搞哦~

目前的code处理乱码时能检测出来要求重新输入,但eval(string)会报错,然后退出:

而eval函数能处理所有数值。怎样将他们支持的功能合并起来。最终的问题变为怎么判断一个字符串是否为有效表达式,并且不报错退出。

尝试了几种方法都不能有效处理,似乎异常处理机制可以试试,就先这样,成功了再来改~~~~~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/56801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计SSM开放实验室管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.3 容器命令介绍

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.3 容器命令介绍10.3.1 容器相关命令10 使用Docker 10.3 …

一类综合的模糊化自适应滑模控制

目录 前言 1.系统描述 2.控制器设计 3.模糊化设计 3.1构造模糊系统 3.2自适应律设计 4仿真分析 4.1仿真系统 4.2仿真结果 前言 上几篇文章分别介绍了模糊化切换增益(也就是模糊化外界扰动d)、模糊化系统部分的不确定项f、模糊化整个切换项,其原理分别为利…

如何制作gif图片?

文章目录一、下载LICEcap【制作gif的工具】(按步骤安装即可)二、LICEcap的使用录制步骤:三、录制的gif效果展示一、下载LICEcap【制作gif的工具】(按步骤安装即可) LICEcap是一款简洁易用的动画屏幕录制软件&#xff…

HTML CSS大学生期末网页大作业 DW个人网页设计 人物介绍 历史人物岳飞介绍

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

智慧工地技术方案

二、 系统概述 建筑工地是一个安全事故多发的场所。目前,工程建设规模不断扩大,工艺流程纷繁复杂,如何完善现场施工现场管理,控制事故发生频率,保障文明施工一直是施工企业、政府管理部门关注的焦点。尤其随着社会的…

Elasticsearch_第3章_ elasticsearch_进阶

Elasticsearch_第3章_ elasticsearch_进阶 文章目录Elasticsearch_第3章_ elasticsearch_进阶0.学习目标1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小结1.3.RestAPI实现聚合1.3.1.API语法1.…

Redis数据结构

一.NoSQL 1.认识NoSQL 关系型数据库:结构化(有很多约束),关联的(数据库会自己维护数据之间的关联,如外键),SQL查询(语法统一),满足事务ACID的特性…

C# Winform 文本面板带滚动条

Winform 中如果需要在一个固定大小的面板中显示一些内容,并且面板能上下拖动,将所有的内容完整的展示,这种需求很常见,下面就演示如何实现的吧 效果: 1.新建一个winform 项目,在界面中拖入一个Panel 将 p…

港科夜闻|香港科技大学校长叶玉如教授,新加坡国立大学曾运雄博士:发现阿尔茨海默病新疗法...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科技大学校长叶玉如教授、新加坡国立大学曾运雄博士:发现阿尔茨海默病新疗法。由中科院院士、香港科技大学校长叶玉如教授,及新加坡国立大学感染、免疫与炎症研究所的曾运雄博士共同领导的团队研…

rxjs pipeable operators(下)

rxjs pipeable operators(下) 这一篇主要就是讲 flattening operators,像其他的 pipeable 一样, flattening operators 内部会 subscribe 每一个传进来的 Observable,并且将其返回一个新的 Observable。不过它可以将 …

VsCode + gdb + gdbserver远程调试arm嵌入式linux C/C++程序

基本流程跟我的另一篇文章《VsCode gdb gdbserver远程调试C程序》一样,不一样的是需要重新编译gdb和交叉编译gdbserver。 一、准备工作 sudo apt install libgmp-dev 如果不安装,编译gdb时可能会报错:configure: error: GMP is missing o…

[附源码]计算机毕业设计springboot疫情管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

如何阅读别人的代码

会读好源码,才能写出好代码 而且除了经常写代码,还要保持习惯看看别人是怎么写的,这里我只引出一个话题就是如何阅读别人的代码 。一个工整的代码就好比欣赏一个漂亮的美女一样让人赏心悦目,百看不厌,一个乱糟糟的代码就不忍直视&…

AAAI 2023| 旷视研究院入选论文亮点解读

近日,国际人工智能顶级会议 AAAI 2023 (Association for the Advancement of Artificial Intelligence)公布了录用结果。本届会议共收到来自全球的 8777 篇论文投稿,其中 1721 篇论文被录用,论文录用率为 19.6%。AAAI …

【LeetCode】1796. 字符串中第二大的数字

题目描述 给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。 混合字符串 由小写英文字母和数字组成。 示例 1: 输入:s “dfa12321afd” 输出:2 解释:…

【网络层】动态路由算法、自治系统AS、IP数据报格式

文章目录路由算法路由表 --------协议自己算出最佳路由---找最少的跳数的路路由算法分类静态路由算法---手动配置---军事网络、小网络---缺点 路由更新慢动态路由算法----路由器之间彼此交换信息-------适合大型网络动态路由算法全局性链路状态 路由算法----------OSPF----所有…

远程办公:为远程桌面配置固定的公网TCP端口地址

在上一篇文章《远程办公:通过Cpolar内网穿透,远程桌面控制家里/公司内网电脑》中,我们通过cpolar映射远程桌面3389端口,成功实现了在外远程桌面控制家里/公司的Windows电脑。 但免费使用cpolar所生成的公网地址为随机公网地址&am…

linux软件管家——yum

文章目录1. yum1. 主要概念理解2. yum的使用1.查找软件2. 安装软件1.为什么要加上sudo提高权限?2.正常安装3.直接安装3.卸载软件1. 正常卸载2. 直接卸载3. 动态小火车的展示3. yum源1. 概念2. 查找yum源3. 替换yum源1. 备份yum源2. 更新国内yum源 注意事项 3. 缓存清空1. yum …

Isaac SDK Sim 环境

Isaac 是 NVIDIA 开放的机器人平台。其 Isaac SDK 包括以下内容: Isaac Apps: 各种机器人应用示例,突出 Engine 特性或专注 GEM 功能Isaac Engine: 一个软件框架,可轻松构建模块化的机器人应用Isaac GEMs: 感知、规划到驱动的模块化算法包&a…