【Python】Python 打印和输出更多用法。-程序员宅基地

技术标签: python  shell  人工智能  

Python 打印和输出

简述

在编程实践中,print 的使用频率非常高,特别是程序运行到某个时刻,要检测产生的结果时,必须用 print 来打印输出。

关于 print 函数,前面很多地方已经提及过,可用于写入标准输出。现在,是时候该深入了。

注意:这里强调的是“print 函数”,而不是“print 语句”。

深入 print

在 Python 2.x 中,print 是一个语句,但是在 Python 3.x 中,它是一个函数。如果 2.x 和 3.x 都使用过,你就会发现差异有多么大。

进入 3.x 的交互式 shell,尝试使用“print 语句”:

[wang@localhost ~]$ python
Python 3.5.2 (default, Mar 29 2017, 11:05:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> print 'Python' ... SyntaxError: Missing parentheses in call to 'print'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

对于大多数人来说,这个错误信息再熟悉不过了。正如上面所提到的那样,print 是 3.x 中的一个函数,与其他函数一样,参数应该被圆括号括起来:

>>> print('Python')
Python
  • 1
  • 2

要了解 print 函数的用途,可以使用 help() 来寻求帮助:

>>> help(print)
...
Help on built-in function print in module builtins:

print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

将对象输出到文本流文件,由 sep 分开,然后以 end 结束。如果 sep、end、file 和 flush 出现,则必须以关键字参数的形式指定。

不使用关键字参数

print 函数可以打印任意数量的值(value1, value2, …),这些值由逗号分隔。

>>> age = 18
>>> 
>>> print('age', age) age 18
  • 1
  • 2
  • 3
  • 4

很容易发现,两个值之间有一个分隔符 - 空格(默认值),这取决于 sep。

分隔符

如果要重新定义分隔符,可以通过 sep 来指定。

>>> print('age', age, sep='')  # 去掉空格
age18
>>> >>> print('www', 'python', 'org', sep='.') # 以 . 分割 www.python.org
  • 1
  • 2
  • 3
  • 4
  • 5

结束符

在 print 中,字符串后面会跟一个 \n(换行),前面的示例体现的不是很明显,换一个方式就显示出来了。

>>> for letter in 'Python':
...     print(letter)
... P y t h o n
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

每打印一个就换行,再打印下一个,这就是 \n 所起的作用。

要改变这种行为,可以给 end 分配一个任意字符串:

>>> for letter in 'Python':
...     print(letter, end='-') ... P-y-t-h-o-n->>> 
  • 1
  • 2
  • 3
  • 4

输出重定向

默认情况下,print 的输出被发送到标准输出流(sys.stdout)。通过重新定义 file,可以将输出发送到不同的流(例如:文件或 sys.stderr)中。

>>> f = open('data.txt', 'w')
>>> print('I am a Pythonista', file=f) >>> f.close()
  • 1
  • 2
  • 3

可以看到,在交互式 shell 中,没有得到任何输出,输出被发送到文件 data.txt 中:

[wang@localhost ~]$ cat data.txt 
I am a Pythonista
  • 1
  • 2

也可以通过这种方式将输出重定向到标准错误(sys.stderr)通道:

>>> import sys
>>> 
>>> print('age: 18', file=sys.stderr) age: 18
  • 1
  • 2
  • 3
  • 4

输出是否缓冲通常由文件决定,但是如果 flush 是 true,则流将被强制刷新。

Python3 格式化输出 %s & %d 等

1.打印字符串

print("My name is %s" %("Alfred.Xue"))
#输出效果:
My name is Alfred.Xue

2.打印整数

print("I am %d years old." %(25))
#输出效果:
I am 25 years old.

3.打印浮点数

print ("His height is %f m"%(1.70))
#输出效果:
His height is 1.700000 m

4.打印浮点数(指定保留两位小数)

print ("His height is %.2f m"%(1.70))
#输出效果: His height is 1.70 m

5.指定占位符宽度

print ("Name:%10s Age:%8d Height:%8.2f"%("Alfred",25,1.70))
#输出效果: Name: Alfred Age: 25 Height: 1.70

6.指定占位符宽度(左对齐)

print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Alfred",25,1.70))
#输出效果:
Name:Alfred     Age:25       Height:1.70

7.指定占位符(只能用0当占位符?)

print ("Name:%-10s Age:%08d Height:%08.2f"%("Alfred",25,1.70))
#输出效果: Name:Alfred Age:00000025 Height:00001.70

8.科学计数法

format(0.0026,'.2e')
#输出效果: '2.60e-03'

 

字符串格式化代码:

格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中

转载于:https://www.cnblogs.com/zhuzhubaoya/p/9272137.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/alexlau2016/article/details/101373279

智能推荐

大学四年,我是怎么靠做外包私活赚了10w+,实现经济独立_大学生做外包项目多少钱-程序员宅基地

文章浏览阅读6.1k次,点赞45次,收藏107次。CSDN上的读者应该大多也是程序员或者互联网相关行业的,计算机这个专业薪资的确比一些传统工科高不少,甚至很多应届生的薪资比传统行业工作十来年的人还高,这还不在少数,至于这样的现象还能持续多久,我也不知道。但是高收入必然会吸引大量的转专业、转行的同学过来,去一个高速发展的行业享受行业发展的红利这无可厚非,去年也有几个学机械、化工的高中同学找我要学计算机的经验。毕竟一个人的命运,除了要靠自我奋斗,也要考虑历史的进程。第三次工业革命的基础就是 信息技术 + 智能制造。搭上时代的快车,这是个人成长的最快途_大学生做外包项目多少钱

C语言-表达式求值_表达式求值c语言代码-程序员宅基地

文章浏览阅读1.3k次。C语言-表达式求值_表达式求值c语言代码

Struts2的过滤器FilterDispatcher_struts2应用web.xml的filterdispacher问题-程序员宅基地

文章浏览阅读1.4k次。测试环境及其前置知识Struts2.0.14 Spring2.5.6 Eclipse3.4 Filter的相关知识,尤其要知道Filter的执行顺序是按照web.xml中配置的filter-mapping顺序执行的。 web.xml定义文件 CharacterEncoding org.springframewor_struts2应用web.xml的filterdispacher问题

Unity 实现Image中Fill Amount的平滑增减效果(进度条为例)_unity fillamount-程序员宅基地

文章浏览阅读1.9w次,点赞14次,收藏32次。在游戏开发过程中,难免会遇到进度条的制作。这里我新建个场景从头做个简化版的。1、准备工作。在Unity中创建一个简单的UI界面。就像这样:其中imgBG和imgFillAmount的尺寸要相同。修改imgFillAmount的属性:(将Image Type改成Filled,记得要在Source Image中加入Sprite)可以看到FillAmount属性是个从0到1的值,拖动就可..._unity fillamount

linux服务器,卸载tensorflow CPU 安装PGU版_linux conda环境下卸载tensorflow-程序员宅基地

文章浏览阅读793次。linux 服务器,卸载tensorflow CPU 安装PGU版写在前面之前用的和学习的都是pytorch框架,现在要运行一个keras的代码,得安装tensorflow和keras,按一个教程,直接在pycharm里setting,点那个+很快就装好了tensorflow和keras,运行了几次发现运行特别慢,用nvidia-smi查看,发现根本没有用pgu跑,一番查找,最后发现安装的tensorflow本身是按CPU跑的,要用GPU跑,得安装tensorflow-gpu。以下主要参考了https_linux conda环境下卸载tensorflow

JMeter之修改Sampler响应数据的编码格式_sampler自定义数据编码-程序员宅基地

文章浏览阅读1.2w次。问题:JMeter的sampler响应数据中有中文时,会解析出错。 JMeter的Sampler中的响应数据默认的编码格式是:ISO-8859-1。来自文件:jmeter.properties中的语句如下:当默认这种编码格式时,如果响应数据中有中文,就会解析出错,如下图所示:要解决以上问题,有2种方案。方案一:1、 修改jme_sampler自定义数据编码

随便推点

用XAMPP搭建PHP服务器,配置部署多个项目的过程(附blocked port error解决方法)_xampp的phperror-程序员宅基地

文章浏览阅读1k次,点赞23次,收藏23次。安装完成XAMPP后,浏览器输入localhost或127.0.0.1,若远程服务器,替换对应IP地址即可。因浏览网页服务默认的port都是80,因此只需输入网址即可,不用输入“:80”了,​​XAMPP默认指向的文件地址是安装目录下的htdocs文件夹。_xampp的phperror

基于 golang, grpc, gin 和 redis, kafka, MySQL, etcd 和 vue3 的简单分布式信息管理系统-程序员宅基地

文章浏览阅读873次,点赞11次,收藏14次。基于 golang, grpc, gin 和 redis, kafka, MySQL, etcd 和 vue3 的简单分布式信息管理系统含完整前后端,微服务:分布式信息管理系统模板,后台管理系统模板,数据库管理系统模板。实现 grpc 微服务远程过程调用,redis 缓存,etcd 服务发现,负载均衡。令牌签验,非对称加密。通过 Web 应用完成对数据库的增删改查(CRUD),文件流的上传和下载。前后端分离

app inventor入门详细教程(音乐播放器)01-程序员宅基地

文章浏览阅读1.6w次,点赞22次,收藏189次。App inventor 介绍简介App Inventor是由Google公司开发的一款在线开放的Android编程工具软件,通过图形化积木式的拖放组件来完成Apps开发App Inventor在2012年1月移交给麻省理工学院MIT的行动学习中心,并由MIT发布使用,目前已经发布了第2版本特点开发环境搭建简单。采用浏览器+云服务模式,无需复杂软件安装开发过程简单。手机App的界面设计和行为开发都可以通过可视化的拖放拼接组件来完成,无需关注复杂的语法规则组件模块丰富。App Invent_app inventor

Discuz X 3.4 系列漏洞梳理_discuz! x3.4漏洞-程序员宅基地

文章浏览阅读2.2w次,点赞7次,收藏23次。分析了目前已经公开的Dz3.4系列漏洞,作为学习和记录。Discuz!X ≤3.4 任意文件删除漏洞1、简述漏洞原因:之前存在的任意文件删除漏洞修复不完全导致可以绕过。漏洞修复时间:2017年9月29日官方对gitee上的代码进行了修复2、复现环境因为官方提供的下载是最新的源码,漏洞修复时间是17年9月29日,通过git找一个修复前的版本签出就可。git checkout 1a912ddb4a62364d1736fa4578b42ecc62c5d0be通过安装向导安装完._discuz! x3.4漏洞

C语言常见程序讲解,适合初学者快速入门!_简单的c语言代码解析-程序员宅基地

文章浏览阅读936次。之前发了很多有关C/C++项目的文章。但是对于C语言的学习,需要自己亲自敲一些代码才能够学好C语言。在这里讲解一下简单的C语言程序(代码),希望自己能够在自己的电脑上敲几遍。a与b的算术运算描述:输出a和b的初始化值的简单算术运算。代码:输出结果:分析:printf函数是将双引号中的内容输出到弹出框中,其中因为a和b的数据类型都是int型,所以运算结果都要用%d的形式输..._简单的c语言代码解析

python中kmeans求到类中心的平均距离_k-means算法python实现-程序员宅基地

文章浏览阅读3.8k次。1.k-means算法的思想k-means算法是一种非监督学习方式,没有目标值,是一种聚类算法,因此要把数据划分成k个类别,那么一般k是知道的。那么假设k=3,聚类过程如下:随机在数据当中抽取三个样本,当做三个类别的中心点(k1,k2,k3);计算其余点(除3个中心点之外的点)到这三个中心点的距离,每一个样本应该有三个距离(a,b,c),然后选出与自己距离最近的中心点作为自己的标记,形成三个簇群;..._kmeans 计算类内平均距离