Python输出的方法与格式详细总结(print与stdout)

2023-10-10 23:59

本文主要是介绍Python输出的方法与格式详细总结(print与stdout),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信许多刷编程题的小伙伴在刷题过程中已经感受到编程题的输出要求是多种多样的,有些输出格式看着就已经头皮发麻了,比如下面这个...

 面对这些较为复杂的输出情况,我们就需要掌握各种各样的输出方法与输出格式了,下面就对常用的输出方式与方法做一些总结。

1.print()普通用法与格式化输出

(1).直接输出(适用于无特殊输出要求的情况)

print(1)
#输出:1
print('very good!')
#输出:very good!
print('A')
#输出:A
print([1,2,3,4,5])
#输出:[1,2,3,4,5]
print({1:'a',2:'b',3:'c'})
#输出:{1:'a',2:'b',3:'c'}

(2).加星号拆包(更加适用于一行打印出数组元素)

x = [1,2,3,4,5]
print(*x)
#输出:1 2 3 4 5
y = {1:'a',2:'b',3:'c',4:'d'}
print(*y)
#输出:1 2 3 4

(3).加入%进行格式化控制(适用于保留几位小数、进制、对齐、科学计数法等较为复杂的情况)

首先我们先了解一下格式符号

以下为标准格式化格式符

格式符表示
%s字符串
%d十进制整数
%f浮点型
%c字符型
%u无符号十进制整数
%o八进制
%x十六进制
%e科学计数法

还有一些常用的格式符

格式符表示
%.2f保留两位小数
%04d输出前面4个字符空间补零
%4d右对齐前面留出4个字符空间
%-4d左对齐并占用4个字符空间

介绍一些常见输出场景

x = 123
print('%d'%x)
#输出:123
print('这有一个整数%d'%666)
#输出:这有一个整数666
print('%.2f'%3.141592)
#输出:3.14
print('%e'%14332231433223)
#输出:1.433223e+13
print('%04d'%99)
#输出:000099
print('%9s'%'hahaha')
#输出:   hahaha(注意左侧有多个空格)

2.print()+format()格式化输出(格式化输出推荐用法)

format进制格式化字符

格式符表示
{:s}字符串
{:d}十进制整数
{:f}浮点型
{:c}字符型
{:u}无符号十进制整数
{:o}八进制
{:x}十六进制
{:e}科学计数法

以下是format常用格式化字符

格式符表示
{:.2f}保留两位小数
{:+.2f}保留两位小数并携带正负号
{:0>2d}左侧补零,整体占两个字符
{:0<2d}右侧补零,整体占两个字符
{:*<4d}右侧补星号,整体占4个字符
{:5d}右对齐,整体占5个字符
{:<5d}左对齐,整体占5个字符
{:^5d}居中对齐,整体占5个字符
{:.2e}科学计数法并保留两位小数
{:,}以逗号分割的数字

介绍一下format常见输出场景:

x = 123
print('{}'.format(x))
#输出:123
print('hello!{}'.format('World'))
#输出:hello!World
print('{}'.format(['1','2','3','4','5']))
#输出:['1','2','3','4','5']
print('{}->{}->{}'.format(1,2,3))
#输出:1->2->3
print('{2}->{0}->{1}'.format(1,2,3))
#输出:3->1->2
print('The Number is {}'.format(666))
#输出:The Number is 666
print('{:.2f}'.format(3.245))
#输出:3.25
print('{:0>4d}'.format(12))
#输出:0012
print('{:>8s}'.format('abc'))
#输出:     abc(注意abc前面有空格)
print('{:<8d}'.format(999))
#输出:999     (注意999后面有空格)
print('{:.2e}'.format(1234554321))
#输出:1.23e+09

另外,print()+format()的搭配还可以这样写

x = 123
print(f'The Number is {x:d}')
#输出:The Number is 123
y = 3.1415
print(f'PI is {y:.2f} ...')
#输出:3.14
z = [1,3,5,7,9]
print(f'{z[0]:d} {z}')
#输出:1 [1, 3, 5, 7, 9]

3.print()其他常用搭配以及复杂型输出示例(数组、矩阵、不规则输出等)

(1).打印一行数组

x = [1,2,3,4,5,6,7]
print(' '.join(map(str,x)))
#输出:1 2 3 4 5 6 7

(2).打印一行以任意字符分割的数组

x = [1,2,3,4,5,6,7]
print('*'.join(map(str,x)))
#输出:1*2*3*4*5*6*7

(3).打印多行数组/二维数组-两种方法

x = [[1,2,3],[4,5,6],[7,8,9]]
for i in x:print(*i)
#输出:
1 2 3
4 5 6
7 8 9

或者

x = [[1,2,3],[4,5,6],[7,8,9]]
for i in x:print(' '.join(map(str,i)))
#输出:
1 2 3
4 5 6
7 8 9

(4).打印一行且不换行

print("no enter",end="")

(5).将两个不同行列的二维数组并排打印

'''
二维数组A:  二维数组B:
1 2 3 4    1 3 5 
5 6 7 8    2 4 6
6 7 8 9    7 8 93 2 1
'''
#定义两个二维数组
a = [[1,2,3,4],[5,6,7,8],[6,7,8,9]]
b = [[1,3,5],[2,4,6],[7,8,9],[3,2,1]]
#定义组合输出所需列表
out_list = []
sum_len = len(a[0])+len(b[0])+1
while a!=[] or b!=[]:if a!=[]:        #取数组a一行out_list+=a.pop(0)+[' ']if b!=[]:        #取数组b一行out_list+=b.pop(0)if len(out_list)<sum_len and a == []:  #取剩下的数组一行out_list = list(' '*(sum_len-len(out_list)))+out_listprint(*out_list)    #输出两个二维数组一行的合并内容out_list = []'''
输出:
1 2 3 4    1 3 5 
5 6 7 8    2 4 6
6 7 8 9    7 8 93 2 1
'''

像上面这种情况需要较多数据处理的过程的输出还有很多,比如打印乘法口诀表、打印沙漏等等

面对这些情况,解决问题的关键就在于输出数据的预处理了,而不是输出方法与方式的选择

比如在文章开头提到的这个题,题目来自PAT乙级1109

题目链接: PAT乙级1109

 Python题解:

import sys
alpha_dict = {}
out_list = []
start = 'abcdefghijklmnopqrstuvwxyz'
str_1 = ''
if_has_pt = False
def printLine(in_str,dict_in,num):  '''打印整行字母矩阵,矩阵的1行等于输出7行'''out_line = []for i in range(0,7):for j in in_str:try:out_line.append(dict_in[j][i])except:continueif num==1 and i==6:print(" ".join(out_line),end="")else:print(" ".join(out_line))out_line = []
for x in range(0,26):      '''这个循环负责读入题目给出的输入'''alpha_dict[start[x]] = [sys.stdin.readline().replace('\n','') for x in range(7)]
in_2 = sys.stdin.readline().replace('\n','')
for y in range(0,len(in_2)):   '''这个循环用于根据输出条件判断是否要输出'''if in_2[y].isupper():str_1 = str_1 + in_2[y]if_has_pt = Falseif ((in_2[y].isupper()==False and if_has_pt==False and str_1!='') or (y+1==len(in_2) and str_1!='')):str_1 = str_1.lower()out_list.append(str_1) '''满足条件的输出行存入列表中'''str_1 = ''if_has_pt = True
for z in range(0,len(out_list)): '''迭代打印整行字母矩阵块'''if z+1==len(out_list):printLine(out_list[z],alpha_dict,1)else:printLine(out_list[z],alpha_dict,0)print()

4.stdout.write()标准化输出

这个输出方法是python的标准化输出,需要我们导入sys模块才能使用

import sys
x = '123123'
sys.stdout.write(x)
#输出:123123

stdout.write与print的不同是,print打印时默认换行,而stdout.write不换行

还有一点就是stdout.write只支持字符串类型的输出,所以感觉还是print好用

这篇关于Python输出的方法与格式详细总结(print与stdout)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184041

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.