今天闲来无事看了下python基础知识,当学到数据类型转换的int()方法时候。发现了这么一个有意思的事情,算是IDE或是解释器的一个小BUG。(具体原因暂不明,留待以后查找问题)

先讲下环境

  • 操作系统:    windows10
  • python版本:3.6.5
  • IDE环境:     pycharm edu 2018.1 x64
  • 解释器:       CPython

然后 int()方法的作用

函数 说明
int(x[,base]) j将x转换为一个整数

闲话少说上代码:

情况1:

# -*- coding:utf-8 -*-
>>>age=input()
>>>print(int(age))
15

输出正常

情况2:

# -*- coding:utf-8 -*-
>>>print(int(15.6))
15 #使用int()转换的时候,会强制省略小数点后面的数字

输出正常

情况3:

# -*- coding:utf-8 -*-
age = input("请输入年龄:")
if int(age)>=18:
print("恭喜你已经成年了")
else:
print("你还需要在成长")

如果用户输入的是正常的不带小数点的整数字符串,那么转换输出没有问题。

当用户输入浮点型字符串后,开始数据类型转换时,出现了这么奇怪的报错:

# -*- coding:utf-8 -*-
age = input("请输入年龄:")
if int(age)>=18: #这里的age是字符串类型,但是在条件表达式中是作为数字对待的
print("恭喜你已经成年了")
else:
print("你还需要在成长") #执行以上参数后,输入值15.6,出现以下报错(不光是输入带小数点的数字字符串,只要是非整数以外的字符,均会报错)
Traceback (most recent call last):
File "C:/pythonstudy/startpython/day1.py", line 6, in <module>
if int(age)>=18:
ValueError: invalid literal for int() with base 10: '15.6' #值错误:int()以10为底的无效文字:'15.6'

可是情况1输入小数点的数字转换的时候是没有问题的。问题出在哪呢?

通过百度找到了解决方法

# # -*- coding:utf-8 -*-import re #引入正则模块
age = input("请输入年龄:")
totalCount = re.sub("\D", "", age) #使用正则的sub方法过滤掉输入的字符串中age带的非数字字符和空的值。
if int(totalCount)>=18:
print("恭喜你已经成年了")
else:
print("你还需要在成长")

当输入带有小数点的字符串的时候,不会再出现值错误的报错。(但是乱输入非数字符号还是会报错)。但是打印totalConunt,你会发现这种方式不光去掉了字符串age中带的非数字字符和空值,连小数点就去掉了。

但是通过如下代码:

# -*- coding:utf-8 -*-
age = int(float(input("请输入年龄:")))
if int(age)>=18:
print("恭喜你已经成年了")
else:
print("你还需要在成长")

你会发现输入小数点又可以了。又不会报错了。

初步推测,int()函数能转换纯整数数字的字符串,不带小数点的(带小数点就会报错。int(方法应该是认为小数点不属于纯整数范畴))。float()能转换纯整数数字字符串或带小数点的纯浮点数字符串。

python学习之路之int()奇怪的报错的更多相关文章

  1. python 学习之FAQ:文档内容写入报错

    2017.3.29 FAQ 1. 文档内容写入报错 使用with open() as file: 写入文档时,出现'\xa9'特殊字符写入报错,通过print('\xa9')打印输出“©”. > ...

  2. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  3. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  4. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  5. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  8. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴....

  9. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

随机推荐

  1. python使用adb获取Android Phone截图(解决Windows传输编码导致png文件损坏的问题)

    使用adb命令 ./adb shell screencap -p 可以截取当前屏幕,并且作为stdout,传给外部.那么对于python,我们可以用如下代码获取数据流. 使用Popen创建子进程用于读 ...

  2. Android(五)——dex文件动态调试

    代码动态调试: 代码动态调试技术,一般是通过观察程序在运行过程中的状态,如寄存器内容,函数执行结果,内存使用情况等等,分析函数功能,明确代码逻辑,查找可能存在的漏洞 工具:IDA 条件:Android ...

  3. EF中关于日期字值的处理

    一.SQL语句方式 var datefrom = DateTime.Parse(fromdate);   var dateto = DateTime.Parse(todate); var sql = ...

  4. reactjs-swiper react轮播图组件基于swiper

    react轮播图组件基于swiper demo地址:http://reactjs-ui.github.io/reactjs-swiper/simple.html 1. 下载安装 npm install ...

  5. Ubuntu18.04下安装搜狗输入法

    Ubuntu18.04下安装搜狗输入法 第一步:安装 fcitx输入框架 sudo apt-get install fcitx 第二步:在官网下载 Linux 版本搜狗输入法 https://piny ...

  6. pycharm与python环境配置

    一.安装python开发环境 在win7的64位系统上安装,然后用cmd命令提示行输入python,出错,网上给出了解决方案,也操作成功了,但是比较麻烦,没关系,安装Anaconda3即可(默认安装即 ...

  7. 强大的金融类图表库 TradingView 使用分享

    这段时间刚好做币圈交易所,运用到了现在最火的金融类图表库 -- TradingView ,就是强大,基本上现在的火币网(https://www.huobi.com),币安网(https://www.b ...

  8. C#工作总结(一):Fleck的WebSocket使用

    一.引子(Foreword) 最近公司里面要做窗体和网页交互的功能.网上找了一下资料,这里做一个简单的扩充和整理,部分内容可能是摘自其他博客,这里会注明出处和原文地址供大家和自己日后查阅. 二.基础知 ...

  9. Linux安装TeamViewer

    1.下载teamview centos版本 官网只有rpm版本,附件中即为官网下载的teamview最新版本 (下载tar包方式,我这里打不开teamviewer的界面,所以这里不推荐) 官方下载地址 ...

  10. linux安装命令出错(could not resolve host mirrorlist.centos.org)

    本次问题出现在虚拟机安装的centos7系统之后,使用yum命令安装wget命令(yum -y install wget),出现could not resolve host mirrorlist.ce ...