|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
刚开始学小甲鱼零基础入门的第二节课,有一个
a=input('请输入0到100的数字:\n')
print(a)
print('a type is',type(a))
#b=float(a)
#print(b,'b type is',type(b))
#temp=int(b)
temp=int(a) #当程序运行到这里的时候会报错
print(temp)
if temp in range(0,100):
print('你妹的真棒,^_^')
else:
print('你大爷的,真丑!T_T')
================================================
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
================ RESTART: D:/Program Files/Python37/1st-3.py ================
请输入0到100的数字:
3.14
3.14
a type is <class 'str'>
Traceback (most recent call last):
File "D:/Program Files/Python37/1st-3.py", line 8, in <module>
temp=int(a)
ValueError: invalid literal for int() with base 10: '3.14'
=================================================
所以我的问题是为什么输入小数的时候,int(a)取整会报错??
这是python 强类型语言的特性。对于python2 来说 input 语句输入的就是数字,所以就是数值类型的转换。(好久不用python2记不特别清楚了,是不是直接就是整数,反正是数字),你要输入字符串必须用raw_input
对于python3 的引擎取消了原来的raw_input ,而input 输入进来就是个字符串(class_str)。要实现字符串的数字->整数,估计是内部先进行遍历看看是不是都是digit 字符,这时候出现的"."就是非法字符,所以直接抛出错误了。
所以解决的方案是 int(float(input())) 即先将小数字符串->float类型的数字->取整。
|
|