python编程input语句_6.python之input()函数

上节课讲了通过条件判断语句if是对成绩score进行条件判断。现在有个问题,案例中score的值是在代码中赋予的,换句话说就是写死的,只能在代码中修改。如果想要每次程序运行时手动输入score值,要如何做到呢?

这就需要用到本节课要讲的input()函数。它的作用就是让我们能和计算机沟通,把我们想要的内容传达给计算机。有了input()函数,就不再是计算机单纯的通过print()函数向我们输出,而是我们可以向它输入。

1、input()函数的使用

在python中输入代码【input('请输入你的成绩:')】,运行后系统展示【请输入你的成绩:】,输入成绩85,然后按回车键,看看系统的反应。

系统既没有报错,也没有其他的执行结果。这是因为代码是从上往下一行行执行的,input()函数执行后,下面没有其他命令,所以不会产生结果。

但是输入的成绩85并没有丢失,而是被储存在程序中。然而,我如何能将存储的成绩调出来,并让其在程序中起作用呢?这就需要用到下一个知识点。

2、input()函数结果的赋值

用前面讲过的变量赋值语句进行赋值,这里放进score盒子中的值不是input()函数中的文字描述,而是我们通过input()函数输入的值。这个值会储存在变量score中,然后打印出来。

将input()函数赋值和条件判断语句结合起来,试着阅读下面的代码,思考代码执行的顺序。

运行这段代码,输入成绩后按回车键,发现程序报错,错误类型是【TypeError: '>=' not supported between instances of 'str' and 'int'】。

为什么会报错呢?难道input()函数赋值语句不能用于条件判断?这种情况要如何处理?

其实我们在编程中,经常会遇到这种运行报错的情况。不管是什么样的课程,都无法保证把所有可能遇到的错误逐一呈现给你并讲清楚错误原因,因为错误类型实在太多了。因此需要我们具备独立判断错误并修正的能力。

如果你英文还可以,看到【TypeError: '>=' not supported between instances of 'str' and 'int'】,大致能明白要表达的意思是【不支持字符串和整数间的关系】。如果你还有点儿编程经验,那么就会明白问题出在哪里了。

但是现在我们还是初学者,要怎么解决这个问题呢?有一个很简单的方法,就是复制错误类型到百度中,看看里面是否有答案。

百度后发现答案非常多,选择第一个点进去,发现答案中不但说明了原因,还说明了解决方法。

按照上面的解决方法将【score = input('请输入你的成绩:')】改为【score = int(input('请输入你的成绩:'))】,再次运行发现程序能够正常运行。

这告诉我们解决程序报错没有想象中的那么复杂,通过互联网可以很容易的定位并解决一些问题。如果你在程序运营的过程中遇到报错,尝试阅读错误类型并自行百度解决。

在input()函数外面套上int()可以解决问题是第4课讲到的知识点,通过int()强制将input()函数返回的数据类型转换成整数,保证和if条件中的整数一致。

那么为什么需要将input()函数的数据转换成整数呢?input()函数返回的数据类型是什么呢?

3、input()函数的数据类型

看了上面的解决方案,我们产生了疑问,在给score赋值时,输出的数字明明是整数,为什么在错误类型中会出现字符串(str)呢?input()函数返回的数据类型是什么呢?

运行下面这段代码,查看结果。其中type()函数的作用是查询括号中的值的数据类型。

查看结果发现,score变量中的值的数据类型是字符串(str),这就可以解释为什么之前程序会报错。赋予变量的值是字符串,却用整数做判断,不报错才怪!

这里我们可以得出一个结论:input()函数的数据类型必为str,不管你在程序中输入的是整数还是字符串,其通过input()函数赋予变量的值必为字符串。

所以,在使用input()函数时,如果条件判断语句中的条件为整数,需要通过int()将input()函数返回的数据类型转换成整数。

这节课到这里就结束了,前面的几节课讲了python函数的输入、输出、条件判断、数据类型等,你是不是都已经掌握了呢?下节课会讲讲关于python的学习方法,以及在python学习中会遇到哪些困难。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码没有明显的语法错误,但是存在逻辑错误。如果数据集中有空行,代码可能会出错。此外,如果数据集中的行数小于 `num_samples`,代码也可能会出错。因此,我们应该在读取数据之前,先添加一个判断语句,确保数据集中的行数不小于 `num_samples`。 另外,在计算 `max_encoder_seq_length` 和 `max_decoder_seq_length` 时,应该使用 `strip()` 函数去掉每个行末尾的空格和换行符。 有关代码的修改建议如下: ```python input_texts = [] target_texts = [] input_characters = set() target_characters = set() with open(data_path, 'r', encoding='utf-8') as f: lines = f.read().split('\n') if len(lines) < num_samples: num_samples = len(lines) - 1 for line in lines[:num_samples]: try: input_text, target_text = line.split('\t') target_text = '\t' + target_text + '\n' input_texts.append(input_text) target_texts.append(target_text) for char in input_text.strip(): input_characters.add(char) for char in target_text.strip(): target_characters.add(char) except ValueError: pass input_characters = sorted(list(input_characters)) target_characters = sorted(list(target_characters)) num_encoder_tokens = len(input_characters) num_decoder_tokens = len(target_characters) max_encoder_seq_length = max([len(txt.strip()) for txt in input_texts]) max_decoder_seq_length = max([len(txt.strip()) for txt in target_texts]) ``` 修改后的代码中,我们添加了一个判断语句,确保读取的行数不会超过数据集的行数。同时,在计算序列的最大长度时,我们使用了 `strip()` 函数去掉每个行末尾的空格和换行符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值