鱼C论坛

 找回密码
 立即注册
查看: 2055|回复: 7

[已解决]int的存在价值是什么

[复制链接]
发表于 2020-1-9 13:09:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
刚学Python,看到第二节,这是我的练习作业
print("----我爱鱼C工作室-----")
temp=input("请输入1至100之间的数字:")
guess=int(temp)
if guess>0:
    if guess<101:
        print("你好漂亮!")
    else:
        print("你好丑啊!")
else:
    print("你好丑啊!")

其中int这个函数是什么意思呢?存在价值是什么呢?
以为是把数值整数化,运行输入0.1,结果报错了。说明整数话这个概念不对。
于是我删掉了guess=int(temp)这句,并把if条件里的guess改成temp后运行,结果输入数值都报错了。
麻烦各位指点一下int的存在意义。
最佳答案
2020-1-9 13:25:56
通过键盘输入获取的字符是字符串是“char”类型的,int函数将字符串类型强制转换为整型类型。在下面的“if guess>0:”语句中,是整型比较条件。故需要转换类型
键盘输入获得的数字,实际是对应的ASCII码,是字符串类型,比如你输入“123456”,程序获得的是“31 32 33 34 35 36”的ASCII编码字符串。并不是看到的数字,所以需要转换。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-9 13:25:56 | 显示全部楼层    本楼为最佳答案   
通过键盘输入获取的字符是字符串是“char”类型的,int函数将字符串类型强制转换为整型类型。在下面的“if guess>0:”语句中,是整型比较条件。故需要转换类型
键盘输入获得的数字,实际是对应的ASCII码,是字符串类型,比如你输入“123456”,程序获得的是“31 32 33 34 35 36”的ASCII编码字符串。并不是看到的数字,所以需要转换。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-9 13:32:49 | 显示全部楼层
        int(v)  v 只能是内容为整数的字符串或浮点数。输入 0.1 的时候,temp 是内容为浮点数的字符串,所以会出错。可以先把 temp 转为浮点数,再转为整型数就不会出错了。
print("----我爱鱼C工作室-----")
guess = int(float(input("请输入1至100之间的数字:")))
if guess > 0:
    if guess < 101:
        print("你好漂亮!")
    else:
        print("你好丑啊!")
else:
    print("你好丑啊!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-9 13:59:36 | 显示全部楼层
-天古- 发表于 2020-1-9 13:25
通过键盘输入获取的字符是字符串是“char”类型的,int函数将字符串类型强制转换为整型类型。在下面的“if  ...

感谢您的指点,虽然有点看不懂,但大概意思明白了,应该是在数据存储上编码方式的不同。
我的结论,在数据比较就得用相应的数据类型,输入的数字就是整形数据,对吧?
看您说整形数据,字符型数据、字符串数据这几个词,我百度了一下,感觉理解还不够透彻,毕竟刚学,还没用到过字符型数据和字符串数据的相关应用,应该会在后期学习和应用中有更深的理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-9 14:08:46 | 显示全部楼层
jackz007 发表于 2020-1-9 13:32
int(v)  v 只能是内容为整数的字符串或浮点数。输入 0.1 的时候,temp 是内容为浮点数的字符串,所 ...

这个浮点数百度了一下,没明白,哈哈,解释的我脑袋都大了。
fioat这应该是个函数吧,还没学到
但您这个guess = int(float(input("请输入1。。。编写的方法,帮我打开了思路,只要后面编写用不到,就不用单独在定义一个词了,直接括号套在里面就好。
谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-9 14:11:17 | 显示全部楼层
晋哥哥 发表于 2020-1-9 13:59
感谢您的指点,虽然有点看不懂,但大概意思明白了,应该是在数据存储上编码方式的不同。
我的结论,在数 ...

没关系,慢慢学习。往后面多听几节课就能明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-9 14:28:07 | 显示全部楼层
本帖最后由 Noahsark 于 2020-1-9 14:30 编辑

一般来说,int()函数只接受以下两种情况的输入:
A.纯数字,可以带小数点,int遇到它们就向下取整。
举例:
int(3.1415926)==3
int(1.9999)==1
int(-7.88)==-7
B.字符串,但这个字符串必须是纯整数,int遇到它们就实现类型转换,把字符串转变成数字类型。
举例:
int("11")==11
int("-39")==-39
于是我们可以得出,int不接受带有小数点的字符串。
另有,
python把input函数的输出结果都默认为是字符串类型。
所以当你在input环节里输入了0.1或者9.2等,都相当于带有小数点的字符串,和int的使用规则不符,故报错。
解决方法:
用float函数做过渡,添加在input和int函数之间即可。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-9 14:51:31 | 显示全部楼层
Noahsark 发表于 2020-1-9 14:28
一般来说,int()函数只接受以下两种情况的输入:
A.纯数字,可以带小数点,int遇到它们就向下取整。
举 ...

老铁你这解释真不是盖的,对于我这种幼鱼简直太通俗易懂了。666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 16:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表