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

作者:Darknight:?: 时间:2021-09-04 18:42:59 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

附: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组

来源:https://blog.csdn.net/qq_46018836/article/details/105199040

标签:python,input(),函数
0
投稿

猜你喜欢

  • vue3.0 上手体验

    2024-04-30 10:26:49
  • 解决selenium模块利用performance获取network日志请求报错的问题(亲测有效)

    2022-12-22 11:09:26
  • Python入门教程(十七)Python的While循环

    2022-07-31 13:42:27
  • 如何将python文件打包成exe可运行文件

    2022-06-29 19:01:17
  • MySQL模式 Strict Mode知识点详解

    2024-01-27 20:50:41
  • MySql带OR关键字的多条件查询语句

    2024-01-21 22:39:25
  • 使用keras实现非线性回归(两种加激活函数的方式)

    2023-07-23 23:33:53
  • 可以自动轮换的页签 tabs

    2008-02-21 12:25:00
  • 详解python OpenCV学习笔记之直方图均衡化

    2022-12-29 20:37:22
  • Python3 webservice接口测试代码详解

    2022-10-21 18:54:51
  • MySQL数据库配置优化的方案

    2024-01-14 00:41:52
  • python实现在线翻译功能

    2023-06-02 22:12:38
  • 谈谈网页一屏有多大?

    2007-12-21 12:28:00
  • pandas:get_dummies()与pd.factorize()的用法及区别说明

    2023-07-10 22:17:32
  • 如何利用python在剪贴板上读取/写入数据

    2021-07-08 17:29:29
  • .NET framework 4.0 安装失败回滚问题

    2023-07-11 15:50:35
  • centos7.3 安装mysql5.7.18的详细教程

    2024-01-12 18:57:00
  • Bootstrap源码解读按钮(5)

    2023-08-23 01:16:51
  • python使用itchat实现手机控制电脑

    2023-08-30 20:20:14
  • Python中的基本数据类型讲解

    2021-04-29 07:07:24
  • asp之家 网络编程 m.aspxhome.com