鱼C论坛

 找回密码
 立即注册
查看: 1365|回复: 10

[已解决]课后练习第31讲第2题

[复制链接]
发表于 2020-8-4 21:41:01 | 显示全部楼层 |阅读模式

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

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

x
标准答案如下:
def int_input(prompt=''):
    while True:
        try:
            int(input(prompt))
            break
        except ValueError:
            print('出错,您输入的不是整数!')

int_input('请输入一个整数:')

请教大佬,int(input(prompt))是什么意思?此处不是类型转换吗?
谢谢
最佳答案
2020-8-4 21:42:00
本帖最后由 sunrise085 于 2020-8-4 21:47 编辑

int(input(prompt))是类型转换。

prompt是传入的字符串,
input(prompt)就是获取输入,得到一个字符串,prompt为提示语,相当于input("请输入一个整数:")
int(input(prompt))将输入的内容转为int类型数据

当输入的字符串无法转为int类型时,该转换则会抛出ValueError异常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-4 21:41:37 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-8-4 21:42 编辑

没错,就是把输入的数据转换为整型
因为input函数返回的是字符串类型,所以要把它转换成整型才能进行计算

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

使用道具 举报

发表于 2020-8-4 21:42:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-8-4 21:47 编辑

int(input(prompt))是类型转换。

prompt是传入的字符串,
input(prompt)就是获取输入,得到一个字符串,prompt为提示语,相当于input("请输入一个整数:")
int(input(prompt))将输入的内容转为int类型数据

当输入的字符串无法转为int类型时,该转换则会抛出ValueError异常

评分

参与人数 1鱼币 +5 收起 理由
Hello. + 5 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-8-4 21:53:01 | 显示全部楼层
sunrise085 发表于 2020-8-4 21:42
int(input(prompt))是类型转换。

prompt是传入的字符串,

但是为什么浮点数也会出现异常而不是下取整呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 22:00:37 | 显示全部楼层
老牛第一名 发表于 2020-8-4 21:53
但是为什么浮点数也会出现异常而不是下取整呢


input的返回值没有浮点数,全都是字符串。
真正的浮点数能被转为int,是向下取整
int(3.2)#这个可以转换,得到3
int('3.2')#这个不能转换,因为字符串中有其他字符 '.'
你可以去看看int函数的文档。
字符串转为int,只有第一个符号可以是'+'或'-',或者没有这个正负号,后面只能是0~9,出现这个以外的情况,都会报ValueError异常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 22:30:54 | 显示全部楼层
老牛第一名 发表于 2020-8-4 21:53
但是为什么浮点数也会出现异常而不是下取整呢

那你不如改成:
def int_input(prompt=''):
    while True:
        try:
            float(input(prompt))
            break
        except ValueError:
            print('出错,您输入的不是整数!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-5 08:31:33 From FishC Mobile | 显示全部楼层
sunrise085 发表于 2020-8-4 22:00
input的返回值没有浮点数,全都是字符串。
真正的浮点数能被转为int,是向下取整


可以先 float('3.2') 一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-5 08:34:50 | 显示全部楼层
_2_ 发表于 2020-8-5 08:31
可以先 float('3.2') 一下

嗯嗯,是的,是可以这么写。
但是楼主写的这个函数本身就是为了保证输入的是一个整数,若那样写,就偏离目的了。
现在只是就事论事,帮助他理解问题的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-5 08:36:00 From FishC Mobile | 显示全部楼层
sunrise085 发表于 2020-8-5 08:34
嗯嗯,是的,是可以这么写。
但是楼主写的这个函数本身就是为了保证输入的是一个整数,若那样写,就偏离 ...

好的,
因为看到各位大佬都已经解答了,
我也不再赘述了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-5 13:56:48 | 显示全部楼层
我再解答一遍吧,还能刷个贴

这个是在try的代码块里的,这个代码的意思就是检测用户输入的是不是整数,不是的话那就没法进行int数据转换,然后就会报错。报错就输入:“出错,您输入的不是整数!”然后重新循环,一直到输入整数,就不会报错,但这个数值也没用被存起来,等于就是一个测试语句。然后执行break退出循环。

所以,这是个测试语句!
如果你心情好,可以设置我为最佳哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-5 17:51:24 | 显示全部楼层
好的,谢谢诸位大佬!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 16:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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