鱼C论坛

 找回密码
 立即注册
查看: 1435|回复: 4

[已解决]33课后题,有点懵

[复制链接]
发表于 2018-2-11 01:41:47 | 显示全部楼层 |阅读模式

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

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

x
  1. def int_input(prompt=''):
  2.     while True:
  3.         try:
  4.             int(input(prompt))
  5.             break
  6.         except ValueError:
  7.             print('出错,您输入的不是整数!')

  8. int_input('请输入一个整数:')
复制代码


这么短的一段代码,各种懵逼:
1、函数的参数(prompt=‘')这是什么参数设置,好像之前小甲鱼没教过啊
2、没有类似print(“请输入一个整数:”)的语句,就是最后一句有这句,可能跟第1点一样,我不理解这个参数设置啊~~
3、整个函数都没有对prompt变量赋值的语句,prompt是怎么跟输入值对应起来的?
最佳答案
2018-2-11 09:34:34
第一个问题
1、函数的参数(prompt=‘')这是什么参数设置,好像之前小甲鱼没教过啊!
你这段代码里边prompt是个普通的参数,如果他后边没有=‘’你应该很容易就明白例如:
def int_input(prompt):
    while True:
        try:
            int(input(prompt))
            break
        except ValueError:
            print('出错,您输入的不是整数!')
换成def int_input(prompt=''):这一句就是说如果你没有输入参数,这个函数就给这个参数一个默认的空值
第二个问题
没有类似print(“请输入一个整数:”)的语句,就是最后一句有这句,可能跟第1点一样,我不理解这个参数设置啊!
int_input('请输入一个整数:')这句就是上来让prompt='请输入一个整数:所以函数里边int(input(prompt))就等于int(input('请输入一个整数:')),这句话实际上int跟input函数的应用你应该会用吧!so,问题很简单了吧!
第三个问题
3、整个函数都没有对prompt变量赋值的语句,prompt是怎么跟输入值对应起来的?
上边第二问题基本已经解释出这个问题的一大半了,后边就是你这个函数里边没有反馈值,如果把int(input(prompt))这一句改成d = int(input(prompt)),在函数的最后加上一句return d的话你应该就会理解了吧!就是改成下面的程序
def int_input(prompt=''):
    while True:
        try:           
            d=int(input(prompt))            
            break
        except ValueError:
            print('出错,您输入的不是整数!')
    print(type(prompt))
    print(type(d))
    return d
print(int_input('请输入一个整数:'))
上边的程序中prompt你可以改成任意名字,如aa,bb...
希望对你理解能有所帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-11 06:06:51 | 显示全部楼层
prompt = ''
def int_input(prompt):
    while True:
        try:
            int(input(prompt))
            break
        except ValueError:
            print('出错,您输入的不是整数!')

int_input('输入数字')

我是新手
你可以看出分別嗎?
在ide你可以用print (int_input('请输入一个整数:'))
和直接輸入int_input('请输入一个整数:')
亦會有不同的答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 07:18:09 | 显示全部楼层
1.prompt=''就是一个函数的参数,他被赋值了,所以是一个默认参数,你在下面就可以用了。
2.这个就是
  1. int(input(''))
复制代码

这样不好看,但是就是获取你的输入,并尝试转为整形。
3.可以在参数里赋值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 08:56:04 | 显示全部楼层
第一行:定义函数 int_input(prompt="")    并且将关键字参数默认为一个空字符串;
第二行:进入while循环体
第三行:用 try 语句对 input 函数接收到的参数进行类型转换
第四行:int(input(prompt))
             估计你对这一行有懵逼点:input(prompt)是个什么鬼?
             |-- 简单点说就是等待用户输入的时候没有任何语句提示,因为 prompt 的值是空字符串。
第五行:如果类型转换成功,则break
第六行:如果引发类型错误异常,则打印“出错了”!

当然可以改成另外一种代码形式,更好理解:
  1. def int_input():
  2.     while True:
  3.         try:
  4.             num = input("请输入一个整数:")
  5.             num = int(num)
  6.             break
  7.         except ValueError:
  8.             print("你输入的不是整数")

  9. int_input()
复制代码


前一段代码其实就是把等待用户输入时的提示语句用参数的形式传递进函数,这样你可以是“请输入一个整数”,也可以是“小子,老老实实地输入一个整数”
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 09:34:34 | 显示全部楼层    本楼为最佳答案   
第一个问题
1、函数的参数(prompt=‘')这是什么参数设置,好像之前小甲鱼没教过啊!
你这段代码里边prompt是个普通的参数,如果他后边没有=‘’你应该很容易就明白例如:
def int_input(prompt):
    while True:
        try:
            int(input(prompt))
            break
        except ValueError:
            print('出错,您输入的不是整数!')
换成def int_input(prompt=''):这一句就是说如果你没有输入参数,这个函数就给这个参数一个默认的空值
第二个问题
没有类似print(“请输入一个整数:”)的语句,就是最后一句有这句,可能跟第1点一样,我不理解这个参数设置啊!
int_input('请输入一个整数:')这句就是上来让prompt='请输入一个整数:所以函数里边int(input(prompt))就等于int(input('请输入一个整数:')),这句话实际上int跟input函数的应用你应该会用吧!so,问题很简单了吧!
第三个问题
3、整个函数都没有对prompt变量赋值的语句,prompt是怎么跟输入值对应起来的?
上边第二问题基本已经解释出这个问题的一大半了,后边就是你这个函数里边没有反馈值,如果把int(input(prompt))这一句改成d = int(input(prompt)),在函数的最后加上一句return d的话你应该就会理解了吧!就是改成下面的程序
def int_input(prompt=''):
    while True:
        try:           
            d=int(input(prompt))            
            break
        except ValueError:
            print('出错,您输入的不是整数!')
    print(type(prompt))
    print(type(d))
    return d
print(int_input('请输入一个整数:'))
上边的程序中prompt你可以改成任意名字,如aa,bb...
希望对你理解能有所帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 15:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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