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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.