python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python input()函数用法

Python中input()函数的用法实例小结

作者:Darknight: :

我们编写的大部分程序,都需要读取输入并对其进行处理,而基本的输入操作是从键盘键入数据,Python从键盘键入数据,大多使用其内置的input()函数,下面这篇文章主要给大家介绍了关于Python中input()函数用法的相关资料,需要的朋友可以参考下

一:input()函数的输入机制

我们编写的大部分程序,都需要读取输入并对其进行处理,而基本的输入操作是从键盘键入数据。Python从键盘键入数据,大多使用其内置的input()函数。但是,不同于程序设计初学者常接触的C和C++,我们不需要在输入之时规定变量的类型。相反,我们可以非常便捷的使用a = input()对任何数据类型的变量a进行赋值,无论是int,float还是列表等等。但是这并不代表Python将程序员的判断数据类型工作完全省去了,如果这样想,那么在编程过程中很容易出现问题。我们知道,在对变量进行赋值时,Python会帮助判断存储数据的类型,不需要我们进行操作,但是input不是这样。

首先,我们需要弄明白我们赋值的变量在python内部到底是以什么形式存在的。下面我将展示一个程序片段

那么我们可以看到,通过type()函数,我们看到无论我们输入的值是int,float还是sring,最后input()函数返回的这个数据的类型均为string型。了解了这一点,将有利于我们更好的使用input()函数。因为在算术运算中,字符串是没法直接和int或float数据进行算术运算的,如果直接使用,那么必然带来TypeError报错。

即使不报错,我们使用两个直接input()函数键入的数据进行计算,那么很可能是在对两个字符串进行组合而不是算术运算

二:input()函数常涉及的强制类型转换

所以,当我们使用input()函数输入的数据进行算术运算时,我们大多需要使用强制类型转换来允许我们计算。得益于Python便捷的数据类型转换,我们可以十分方便的转换数据类型。

第一种是在键入时进行转换,例如:a = int(input())。这样赋值的数据存储的形式从一开始就是我们转换的数据类型,与C语言,C++等无异。

第二种则是在使用时进行转换。这样赋值的数据存储的形式仍是input()返回的字符串类型,仅仅在使用时转换,会加大工作量,且有可能因为粗心带来报错,所以要谨慎使用。

三:带提示的input()函数及其常见问题

在初见input()时,我发现了 variable = input(prompt)这个输入格式,一下子惊如天人。觉得Python的input()函数的用户交互真是友善,从此不再需要再像其他一些编程语言一样单独写一个用户提示语。以下面一个片段为例

可以看到,当我们敲击Enter以后,屏幕上会显示我们编写的提示性语言,并等待用户输入。这样给交互性程序编写带来了便利。

但是,我很快在使用variable = input(prompt)这个形式时遇到了问题,当我理所当然的把input(prompt)中的prompt当作print()函数使用时,我发现input()并不能将变量赋值返回给程序。也就是说,如果我们在input()的提示性语言中加入了变量,就很可能出错,例如:

这个问题的原因是variable = input(prompt)是直接以字符串形式输出提示性的prompt语言,不能像print()函数一样将值赋给变量并输出。那么这是不是意味着我们不能将变量加入其中呢?毕竟在很多循环中,提示性的语言是需要根据循环次数改变的。

那么实际上我们是可以加入的,解决方法就是上面讲过的强制类型转换,正因为我们已经知道input()以字符串形式输出,所以需要我们将变量转化成string型!但是,需要注意的是,使用的符号是用于字符串连接的“+”而不是分割字符串和变量的“,”——这里需要注意。

四:利用input()一次性输入多个变量值

我们在编程的时候,常常需要一次性给多个变量赋值。在C语言和C++中,我们使用scanf("%d %d", &a,&b)这样的方式进行输入,其数据以空格为分界。那么在python中我们该如何一次性输入多个值呢?

(1):利用split()函数进行输入,同时,我们不仅可以利用split()函数一次性输入多个数,我们还可以设置分隔符,除了传统的空格形式,也可以用逗号“,”这种更符合语言习惯的方式分隔输入字符。其原理是因为input()输入了一个字符串,而split()函数能根据设定的分割点分割字符串并返回分割后的字符串列表,所以能实现一次性输入多个数据值。范例如下:

但是,这样输入的值仍是字符串型,我们在上面已经说过字符串无法直接参与运算,最好输入时进行类型转换,那么,按照我们第二点的方法转换多输入值可行吗?

可以看到,这样是不可以的,那么为什么上面单输入可以而多输入报错呢?原因我们其实已经说过了,split()函数返回的是一个列表,spring当然能被转换成int型,但是列表是没法被这样直接转换的,所以我们需要用另一个函数map()来实现多输入的强制类型转换。

map()函数接受两个接收两个参数,一个是函数,一个是序列,map()将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。我们将传入的函数设置为强制类型转换函数int,则split()函数返回的列表里的每一个值都将被强制转换类型,从而实现多输入的类型转换。范例如下:

附:input()函数结果的强制转换

choice=input('请选择1或2')
if choice=='1':
    print('正确')
else:
    print('错误')

上面这段代码很简单,仅有两个选项,如果上面代码不是两个,而是几十个,几百个,难道我们要一个一个打'1','2','3','4','5',.....'200','201'.....,这时我们要想办法简单一点,那就是把所有的数据的类型都转换成整型,但是上面不是说了input()函数的返回都为string类型吗?其实在某些特殊情况下是可以被强制转换的,

choice=int(input('请选择1或2'))
if choice==1:
    print('正确')
else:
    print('错误')
 
------------------------------
 
请选择1或2 1
正确

只要在input()函数前面加上int(),就可以把input()函数的结果强制转换成整数。

那么我们什么时候会用到把结果强制转换成整数的时候呢,当我们想要的结果是数字的时候。例如年龄,工资,身高,体重等这些数字时。

例如:我们要对全班的同学按照身高进行分组,这时我们就需要用到整数。

height=int(input('请问你的身高是:'))
if 0<height<=150:
    print('你被分到了1组')
elif 150<height<=180:
    print('你被分到了2组')
else:
    print('你被分到了3组)
-----------------------------------
请问你的身高是:185   
你被分到了3组

总结

到此这篇关于Python中input()函数用法的文章就介绍到这了,更多相关Python input()函数用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文