hz310000 发表于 2020-6-22 15:55:00

关于 零基础入门学习的第二课里 int的用法

关于零基础入门学习的第二课里面有使用int,int是一个取整形的函数,比如 int(1.52)出来就是1 ,int(5.2)出来就是5,但是当我运行下面脚本后,录入1.52,却提示错误,请各位同学帮忙分析一下原因;

a=input("请输入1-100其中一个数字:")
b=int(a)
if 1 <= b <= 100:
    print("aaa")
else:
    print("bbb")

hz310000 发表于 2020-6-22 15:55:40

请输入1-100其中一个数字:1.52
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\1.py", line 2, in <module>
    b=int(a)
ValueError: invalid literal for int() with base 10: '1.52'
>>>

Twilight6 发表于 2020-6-22 15:56:38

hz310000 发表于 2020-6-22 15:55
请输入1-100其中一个数字:1.52
Traceback (most recent call last):
File "C:%users\Administrator\Des ...



int 不能将小数字符串转化为整型

你可以用 float:
a=input("请输入1-100其中一个数字:")
b=float(a)
if 1 <= b <= 100:
    print("aaa")
else:
    print("bbb")

hz310000 发表于 2020-6-22 15:57:33

Twilight6 发表于 2020-6-22 15:56
int 不能将小数字符串转化为整型

你可以用 float:

>>> int(1.52)
1


这样又能出来结果,是怎么解释呢

Twilight6 发表于 2020-6-22 15:58:12

hz310000 发表于 2020-6-22 15:57
>>> int(1.52)
1



这个是浮点型 而不是小数字符串

hz310000 发表于 2020-6-22 15:58:27

Twilight6 发表于 2020-6-22 15:56
int 不能将小数字符串转化为整型

你可以用 float:

你的意思是 =input是把数字转换成字符串了,对吧

hz310000 发表于 2020-6-22 16:00:36

如果 input的结果是字符串,那后面的字符串比较大小1-100,又是怎么比较的呢,不是只有数字才能比较大小吗,如果input的结果是数字,那int为啥不能在脚本中进行取整呢,因为单独运行int小数都是可以的

Twilight6 发表于 2020-6-22 16:00:47

hz310000 发表于 2020-6-22 15:58
你的意思是 =input是把数字转换成字符串了,对吧

嗯 input 返回的就是字符串

hz310000 发表于 2020-6-22 16:04:28

Twilight6 发表于 2020-6-22 16:00
嗯 input 返回的就是字符串

如果input返回的是字符串,那int也是针对字符串进行整形?int不是也可以对数字进行整形的吗,也就是说int对字符串进行整形的时候不能是小数,整形的意义不是把小数变成整数去掉小数点后面的值吗,但是如果int对字符串进行整形的意义又是什么呢?因为首先int对字符串的要求是没有小数,既然没有小数就没有整形的必要了

Twilight6 发表于 2020-6-22 16:05:03

hz310000 发表于 2020-6-22 16:00
如果 input的结果是字符串,那后面的字符串比较大小1-100,又是怎么比较的呢,不是只有数字才能比较大小吗 ...

int 将字符串转为整型了,并不是比较字符串,还是比较整型之间的大小,input是接收用户输入并将输入的值转为字符串返回

你这 int 就是将字符串转为 整型啊,就是整数

如果字符串比较大小是 依次比较 ASCII码值的

Twilight6 发表于 2020-6-22 16:06:17

hz310000 发表于 2020-6-22 16:04
如果input返回的是字符串,那int也是针对字符串进行整形?int不是也可以对数字进行整形的吗,也就是说int ...

不是如果 input 是返回字符串,是一定返回的是字符串!

这里的 int 就是将字符串转化为整型 , 也就是整数

而字符串中的 . int 是无法识别出来是 小数点的意思 导致无法转化

Twilight6 发表于 2020-6-22 16:13:04

本帖最后由 Twilight6 于 2020-6-22 16:24 编辑

hz310000 发表于 2020-6-22 16:04
如果input返回的是字符串,那int也是针对字符串进行整形?int不是也可以对数字进行整形的吗,也就是说int ...

整型、字符串、浮点型都是一种类型,而不是什么意义

而 int 是将其他数值转化为整型的一个 Python 内置函数

纯数值字符串 可以通过 int 来转化为整型(这里指的是只有数字的字符串,或者带负号的数字字符串)

意义是什么? 你就像你把一加一等于二 转为数学表达1 + 1 = 2 一样的

两种不同类型的值,为什么不要通过转化呢?

int 转化为整型str 转化为字符串float 转化为浮点型

hz310000 发表于 2020-6-22 16:15:16

>>> b=int("1")
>>> c=b+2
>>> print (c)
3

int 在这里把字符串变成了数字,不然后面的加法就是错的,结果也不会出来3,所以我还是不明白,int函数出来的值到底是字符串还是数字

或许int只能对整数型的字符串,或者数值型的小数?但是不能对小数型的字符串?

hz310000 发表于 2020-6-22 16:16:39

>>> b=int("1.01")
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
    b=int("1.01")
ValueError: invalid literal for int() with base 10: '1.01'
>>> b=int(1.01)
>>>

看来确实是这样,对于字符串里面有小数点的,int会提示出错,但是对数值型的,int会取整

Twilight6 发表于 2020-6-22 16:16:42

hz310000 发表于 2020-6-22 16:15
>>> b=int("1")
>>> c=b+2
>>> print (c)



int 是将其他类型的值转为整型啊   

字符串是 str

hz310000 发表于 2020-6-22 16:18:14

谢谢各位,提了一个幼稚的问题,却得到更高深的答案,学到了更多的东西

Twilight6 发表于 2020-6-22 16:19:06

hz310000 发表于 2020-6-22 16:18
谢谢各位,提了一个幼稚的问题,却得到更高深的答案,学到了更多的东西

{:10_245:}全程只有我一个人啦没有各位哈哈

hz310000 发表于 2020-6-22 16:19:49

Twilight6 发表于 2020-6-22 16:19
全程只有我一个人啦没有各位哈哈

好吧,好久没有混论坛了,已经完全没有意识了

小甲鱼的铁粉 发表于 2020-6-22 17:33:57

我来学习一下{:10_297:}

2425758776 发表于 2021-4-9 04:29:49

刚刚遇到这个问题就看到楼主了,感激涕零
页: [1] 2
查看完整版本: 关于 零基础入门学习的第二课里 int的用法