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

news/2024/10/10 22:26:22/

        我本身有着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.ppmy.cn/news/1060.html

相关文章

java中的静态代理、jdk动态代理以及CGLIB 动态代理

代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能 那以下文章主要谈三种代理模式,分别是静…

Java项目:ssm实验室设备管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 ssm实验室设备管理系统。前台jsplayuieasyui等框架渲染数据、后台java语言搭配ssm(spring、springmvc、mybatis、maven) 数据库mysql5.7、8.0版…

基于FPGA的智能小车系统

目 录 前 言 1 第1章 系统总体方案设计 4 1.1 系统任务描述 4 1.2 控制系统要求 4 1.3 方案设计与论证 4 1.3.1 小车载体选择 4 1.3.2 主控制器选择 5 1.3.3 传感器选择 5 1.3.4 电机驱动选择 6 1.3.5 稳压电源选择 7 1.3.6 智能小车系统最终方案 7 1.4 系统总体设计 8 1.4.…

2023年天津天狮学院专升本市场营销专业《市场营销学》考试大纲

2023年天津天狮学院高职升本市场营销专业入学考试《市场营销学》考试大纲一、考试性质 《市场营销学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《市场营销学》…

Mysql进阶学习(七)联合查询与DML语言

Mysql进阶学习(七)联合查询与DML语言进阶9:联合查询语法:特点:★案例DML语言1、插入语句1.1.插入的值的类型要与列的类型一致或兼容1.2.不可以为null的列必须插入值。可以为null的列如何插入值?1.3.列的顺序…

图像压缩原理-JPEG

搬来一个基础啊 给自己看~~ 非技术指正勿扰 图像的格式有很多种,比如PNG,JPEG等等,但当我们把一张图用工具变成各种其他格式时,其在计算机文件系统显示的文件大小各不一样,但是当你打开显示时,从视觉角度…

使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略

在本文中,我想向您展示如何应用S&P500股票市场指数的交易策略。最近我们被客户要求撰写关于交易策略的研究报告,包括一些图形和统计输出。 通过组合ARIMA GARCH模型,从长期来看,我们可以超过“买入并持有”方法。 相…

python电子学会一级知识点总结

**一级集训笔记**一.编程环境 1.IDLE是python自带的集成开发环境 2.IDEL两种模式:交互模式(>>>)和脚本模式 3.python文件的扩展名是.py,但是.pyw也是python文件 4.python版本不同不兼容(py2,py3) …