老牛第一名 发表于 2020-8-4 21:41:01

课后练习第31讲第2题

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

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


请教大佬,int(input(prompt))是什么意思?此处不是类型转换吗?
谢谢{:9_227:}

xiaosi4081 发表于 2020-8-4 21:41:37

本帖最后由 xiaosi4081 于 2020-8-4 21:42 编辑

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

求最佳{:10_254:}

sunrise085 发表于 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异常

老牛第一名 发表于 2020-8-4 21:53:01

sunrise085 发表于 2020-8-4 21:42
int(input(prompt))是类型转换。

prompt是传入的字符串,


但是为什么浮点数也会出现异常而不是下取整呢

sunrise085 发表于 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异常

永恒的蓝色梦想 发表于 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('出错,您输入的不是整数!')

_2_ 发表于 2020-8-5 08:31:33

sunrise085 发表于 2020-8-4 22:00
input的返回值没有浮点数,全都是字符串。
真正的浮点数能被转为int,是向下取整



可以先 float('3.2') 一下

sunrise085 发表于 2020-8-5 08:34:50

_2_ 发表于 2020-8-5 08:31
可以先 float('3.2') 一下

嗯嗯,是的,是可以这么写。
但是楼主写的这个函数本身就是为了保证输入的是一个整数,若那样写,就偏离目的了。
现在只是就事论事,帮助他理解问题的原因。

_2_ 发表于 2020-8-5 08:36:00

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

好的,
因为看到各位大佬都已经解答了,
我也不再赘述了

陈尚涵 发表于 2020-8-5 13:56:48

我再解答一遍吧,还能刷个贴{:10_250:}

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

所以,这是个测试语句!
如果你心情好,可以设置我为最佳哦{:10_254:}

老牛第一名 发表于 2020-8-5 17:51:24

好的,谢谢诸位大佬!
页: [1]
查看完整版本: 课后练习第31讲第2题