一文带你搞懂 Python 的输入输出

开发 后端
本文基于Python基础,介绍了常见的几种输入和输出的几种方式,通过一个个项目的实际操作,能够更好的理解输入和输出语句的用法。在项目实践过程中遇到的难点,需要注意的点做了详细讲解。

[[437875]]

Hey,大家好呀,我是Go进阶者。

一、为什么要输入和输出?

无论是从 一开始的“hello world”,还是前面的各种例子,基本都是些“自说自话”,展示类的代码片段。只有能够接收用户输入,根据输入代码生成结果,并输出到屏幕上展示出来,才算一个较为完整,简单的程序。

二、 input输入函数

获取用户输入,保存成一个字符串。重要的话,说两遍,input函数的返回值是一个字符串类型。哪怕你输入的是个数字1,返回给你的只会是字符串“1”,而不是整数1。下面是一些简单的展示例子:

  1. #第一个例子 
  2. >>> inp  = input("please input your name: "
  3. please input your name: jack 
  4. >>> inp 
  5. 'jack' 
  6. >>> type(inp) 
  7. <class 'str'
  8.  
  9. #第二个例子 
  10. age  = input("please input your age: "
  11. please input your age: 18 
  12.  print(age) 
  13. '18' 
  14.  
  15. #第三个例子 
  16. >>> type(age) 
  17. <class 'str'
  18.  
  19. #第四个例子 
  20.  
  21. >>> a = input("请输入一个字符:"
  22. '请输入一个字符:前后带有空白'  
  23. >>> a 
  24. '   前后带有空白   ' 

第一个例子中,inp = input("please input your name: "),input函数里可以提供一个字符串,用来给用户进行输入提示。input函数的返回值赋值给inp这个变量后,inp里就保存了用户输入的值。

type是Python内置的函数之一,非常有用,用于查看对象的数据类型。

第二个例子, 输入了年龄18,但age里保存的是一个“18”的字符串。

第三个例子,什么都没输入,返回的是一个空字符串。

第四个例子,有效输入的前后空白被保留在了返回的字符串中。

从上面例子的展示中,不难发现,input函数将用户的输入原样不动的返回给了变量 ,并包装成一个字符串。这肯定是不行的,会带来很多问题,所以通常都需要对用户输入进行处理和判定。

对空输入进行处理:

  1. inp = input("请输入你的姓名:  "
  2.  
  3. if inp == "":     
  4.     inp = input("姓名不能为空,请重新输入:  "

将字符串转换成数字类型:

  1. age = input("请输入你的年龄:"
  2.  
  3. age = int(age)   # 将字符串转化为整数 
  4.  
  5. if age > 18: 
  6.     print("你已经成年!"
  7. else
  8.     print("还没断奶?"

去除开头的空白lstrip,去除结尾的空白rstrip以及去除两端的空白strip

  1. inp = input("请输入你的姓名:  "
  2.  
  3. inp = inp.strip()  # strip的用法在字符串数据类型有讲述 
  4.  
  5. print(inp) 

判断输入的字符类型

前面在将字符串转化为整数用的是int()函数,这种方式有危险的,看下面的例子:

  1. s = "123" 
  2. a = int(s) 
  3. print(a) 
  4.  
  5. s = "something" 
  6. a = int(s) 

对于形如“123”, “283242”的字符串,转化没问题,但是对于包含字符、特殊字符的字符串就没办法转化了,会弹出异常错误。所以在使用int函数之前,要先对输入进行判断。

修改一下上面的例子:

  1. age = input("请输入你的年龄:"
  2.  
  3. if age.isdigit():   # 使用isdigit函数判断输入是否全是数字格式 
  4.     age = int(age)   # 将字符串转化为整数 
  5.     print("你的年龄是:", age) 
  6. else
  7.     print("输入不合法!"

input函数有时可以巧妙地用于阻塞或暂停程序

  1. print("程序前面部分执行完毕......"
  2.  
  3. input("请按回车继续......")       # 在这里程序会暂停,等待你的回车动作 
  4.  
  5. print("继续执行程序的后面部分......"

此时的input函数不会将输入保存下来,只是用作暂停程序动作。

三、 print输入函数

print函数用于将内容格式化显示在标准输出上,主要指的是屏幕显示器。

print可以接受多个字符串,字符串类型的变量或者可print的对象。每个字符串用逗号“,”隔开,连成一串输出。print会依次打印每个字符串,同时,每遇到一个逗号“,”就输出一个空格。

  1. a = "i am" 
  2. b = "student" 
  3. print(a,"a", b) 
  4. # 自动以空格分隔 
  5. print(a+"a"+b) 

对于形如print(a+"a"+b)的语句,其实是先计算a+"a"+b的值,然后再通过print打印它。print()会自动执行内部的语句,输出想要的结果。再看一个例子:

  1. >>> a = 10 
  2. >>> b = 2 
  3. >>> print(sum((a, a*b)))        # 先求a*b,再求和,再打印 
  4. 30   #结果 

看一下print函数的原型:print(self, *args, sep=' ', end='\n', file=None)

sep参数: 分隔的符号,默认是一个空格;

end参数: 打印后的结束方式,默认为换行符\n。如果,设置end='',则可以不换行,让print在一行内连续打印。活用print的参数,可以实现灵活的打印控制。

  1. >>> a = "i am" 
  2. >>> b = "student" 
  3. >>> print(a,"a" , b, sep="*"
  4. i am*a*student #输出结果 

四、 print格式化输出

在Python2.6以后,有两种格式化输出的方式。

一种就是类似C语言的printf的%百分号格式化输出,也是Python最基础最常用的格式化输出方式。另一种就是str.format()的方式。

这里 重点讲述一下传统的%百分号格式化输出方式,

以下面的语句为例:

  1. print ("我叫 %s 今年 %d 岁!" % ('小明', 10)) 

首先构造一个字符串"我叫 %s 今年 %d 岁!",将其中需要用别的变量或值替代的部分,用%百分符加一个数据类型代号,比如%s、%d来代替。然后在字符串的后面用%加一个同样数量变量或值的元组。

也就是前面有多少个%符号,后面就要提供多少个参数值,每个参数值之间用逗号隔开,所有参数用圆括号括起来。每个参数与前面的%一一对应,并且数据类型也要能够合法对应。

这是基本用法,更多的格式见下图,然后掌握格式的搭配方法。

格式化符号:(图片来源于百度,侵权请联系删除)

格式化操作符辅助指令:(图片来源于百度,侵权请联系删除)

经典案例:

  1. s = "i am %s" % "jack" 
  2. print(s) 
  3.  
  4. s = "i am %s age %d" % ("jack", 18) 
  5. print(s) 
  6.  
  7. s = "i am %(name)s age %(age)d" % {"name""jack""age": 18} 
  8. print(s) 
  9. s = "percent %.2f" % 99.97623 
  10. print(s) 
  11. s = "i am %(pp).2f" % {"pp": 123.425556, } 
  12. print(s) 
  13. s = "i am %.2f %%" % 123.425556 
  14. print(s) 

需要特别说明的是,如果你想在print中打印一个%百分符号本身,那么你需要使用%%,两个百分符转义出一个百分符,也就是print("%%")。

如果你对print复杂的格式化控制无爱,对美观也没有要求,那么简单傻瓜式的一路用%s作为占位符,是种省事的做法。例如:

  1. print("%s %s %s %s %s" % (a, b, c, d, e)) 

五、总结

本文基于Python基础,介绍了常见的几种输入和输出的几种方式,通过一个个项目的实际操作,能够更好的理解输入和输出语句的用法。在项目实践过程中遇到的难点,需要注意的点做了详细讲解。

希望能够帮助读者更好的学习Python。我是Go进阶者,如果觉得还不错,记得动手点赞一下哈。

本文转载自微信公众号「Go语言进阶学习」,可以通过以下二维码关注。转载本文请联系Go语言进阶学习公众号。

 

责任编辑:武晓燕 来源: Go语言进阶学习
相关推荐

2023-03-06 21:29:41

mmap技术操作系统

2021-09-11 10:41:27

PythonPickle模块

2021-09-07 09:46:40

JavaScriptGenerator函数

2021-11-06 10:18:30

Python变量常量

2021-06-24 10:24:57

Linux输入输出设备Interface

2021-11-20 10:27:43

Python数据类型

2021-11-22 06:21:31

Python数据类型Python基础

2021-08-05 06:54:05

观察者订阅设计

2024-04-12 12:19:08

语言模型AI

2022-03-24 08:51:48

Redis互联网NoSQL

2020-05-11 14:35:11

微服务架构代码

2021-09-28 07:12:10

avaScriptCurrying柯里化

2021-07-21 09:24:25

MongoDB数据库 Python

2021-03-22 10:05:59

netstat命令Linux

2023-09-08 08:20:46

ThreadLoca多线程工具

2023-09-15 12:00:01

API应用程序接口

2021-03-06 08:04:46

NginxHttpHttps

2020-02-21 20:10:13

搞懂事务隔离级别

2022-02-14 21:17:21

RPC框架协议

2024-09-26 07:27:27

点赞
收藏

51CTO技术栈公众号