Python笔记_第一篇_面向过程_第一部分_4.格式化输入和输出
开始Python编程首先要学习两类最常用(经常出现和使用)输入和输出。学习编程最重要的状态就是“人机交互”,所以这两类函数显得尤其重要。
第一部分 格式化输入
1.1 函:input
语:input(*args, **kwargs)
用:从标准输入读取字符。通过input函数都为字符串形式的输入,不过可以通过数据类型的转换成想要的数据类型。
例1:
# input
age1 = input("请输入您的年龄: ")
print(type(age1))
print("age = %s" % age1)
# 输出结果:
# 请输入您的年龄: 18
# <class 'str'> # 输入为字符串形式,打印结果也是字符串
# age = 18 age2 = int(input("请输入您的年龄: "))
print(type(age2))
print("age = %d" % age2)
# 输出结果:
# 请输入您的年龄: 18
# <class 'int'> # 输入为字符串形式,通过类型转换,把字符串转换成整型,打印结果是整型
# age = 18
第二部分 格式化输出
2.1 函:print
语:print(*object, sep=' ', end=' ',file=sys.stdout,flush=False/True)
用:*object(打印对象),sep=' '(每个对象按照关键字进行分割,默认为空格), end=' '(并行打印,不换行,默认为空格,可添加以什么结尾)
file=sys.stdout(指定对象必须要有写writ的方法,如果指定对象没有该方法或者不存在,就会返回默认值,直接在指定文本中打印内容),
flush=False/True(文本刷新)
例2:*object
# 打印一个整型
print(18)
print(type(18))
# 输出结果:
#
# <class 'int'> # 打印一个浮点型
print(18.18)
print(type(18.18))
# 输出结果:
# 18.18
# <class 'float'> # 打印一个字符串
print("Thomas")
print(type("Thomas"))
# 输出结果:
# Thomas
# <class 'str'> # 交互式打印,也叫连续打印
print(18, 18, 18, 18)
# 输出结果:
# 18 18 18 18
print("Thomas", "Peters")
print("Thomas" "Peters")
# 输出结果:
# Thomas Peters
# ThomasPeters # 如果对象不是变量,而是字符串,可以不用分隔符,此时python会把两个字符串当做一个输出
例3:sep=' '
# sep=' '
print("Thomas", "Peters", "Jessie", sep="***")
# 输出结果:
# Thomas***Peters***Jessie # 用“***”来进行分割字符串
例4:end=' '
# end=' '
print("Thomas", end="...")
print("Thomas", end="...")
print("Thomas", end="...")
print("Thomas", end="\n") # 如果不设置换行符,将一致顺序打印
print("Thomas", end="...")
# 输出结果:
# Thomas...Thomas...Thomas...Thomas
# Thomas...
例5:file=sys.stdout
# file = sys.stdout
new = open("new.txt","w") # 新建一个对象new,对应的是new.txt文本文件,属性可写
print("aaa", end = "hello\n", file = new)
# 输出,file 指向该对象,不能指向txt文本
new.close()
# 关闭打开文件
# 运行结果:
# 在new.txt稳步中成功写入字符串aaahello
例6:flush=True/False
# flush = False/True
f = open("new1.txt", "w")
print("Thomas", file=f)
# 此时文本当中的内容仍为空,f.close()才会显示内容
print("Thomas", file=f,flush=True)
# 如果加上flush=真,直接就会在文本中显示,不用关闭文本
2.2 格式化输出
格式化输出:在print表达语句中占位,用格式化的方法进行填充、显示等格式化操作,常用的方法为:%(百分号)占位法和format函数法。
2.2.1 百分号(%)占位法(也叫占位符)
语法格式为:print("%?" % (对应顺序格式化内容))
2.1.1.1 %d %s %f 的用法
(1) 常规用法
# %d %s %f的常规用法
# 作用:整数型、数值型、浮点型常规占位法
print("%d" % 800.52345) # 只保留整数部分(不含四舍五入)
print("%s" % "字符串") # 输出一个字符串
print("%f" % 800.52345) # 默认浮点型为6位小数,如果多的位数按四舍五入进行递进,如果少于6位补0
# 输出结果:
#
# 字符串
# 800.523450
(2) 规定字段长度的用法(默认长度从左端开始,右端对齐)
# %d %s %f的规定字段长度的用法(默认长度从左端开始)
print("%10d" % 800.52345) # 规定总长度为10个的整型输出
print("%10s" % "字符串") # 规定总长度为10个的字符串型输出
print("%20f" % 800.52345) # 规定总长度为20个浮点型输出
# # 输出结果:
#
# 字符串
# 800.523450
(3) %f 的特殊方法:四舍五入
# %f的特殊方法,四舍五入
print("%.4f" % 800.52345) # 保留小数的四舍五入方法
# 输出结果:
# 800.5235
(4) 左对齐,并填充的方式(默认右对齐"+"可以不写,左对齐为"-")
# %d %s %f运行左对齐的方法(默认长度从字符结束端开始)
print("%-10d" % 800.52345) # 规定总长度为10个的整型输出
print("%-10s" % "字符串") # 规定总长度为10个的字符串型输出
print("%-20f" % 800.52345) # 规定总长度为20个浮点型输出
# 输出结果
# 800 |10个字符
# 字符串 |10个字符
# 800.523450 |20个字符
(5) 左对齐且填充0的方式(默认长度从左端开始)
# %d %f对齐填充0的方式(默认长度从左端开始)
print("%010d" % 800.52345) # 规定总长度为10个的整型输出,非字段位填充0
print("%010s" % "字符串") # 只对数字型变量有效,字符串型无效。
print("%020f" % 800.52345) # 规定总长度为20个浮点输出,非字段位填充0
# 输出结果:
#
# 字符串 # 只对数字型变量有效,字符串型无效。
# 0000000000800.523450
2.1.1.2 %c 的用法
对应一个字符的输出(char)类型的,用途不大
# %c
# 作用:对应一个字符的输出(char)类型
print("%c" % "A")
# 输出结果:
# A
2.1.1.3 %i %u 的用法
转成有符号10进制整数(用法同%d)、转成无符号的10进制整数
# %i %u
# 作用:转成有符号10进制整数(同%d)、转成无符号的10进制整数
print("%i" % -800.52345)
print("%u" % -800.52345)
# 输出结果:
# -800
# -800
2.1.1.4 %o %x %X 的用法
这几个符号的用法就是八进制、十六进制、十六进制的转换(这个大写的X是吧表示十六进制的x显示成大写)
# %o %x %X
# 作用:转换为八进制数、转换为十六进制数、转换为十六进制数(X位置大写)
print("%o" % 123456)
print("%x" % 123456)
print("%X" % 123456)
# 输出结果:
#
# 1e240
# 1E240
2.1.1.5 %e %E 的用法
用科学计数法来表示数字、第二个大写的E也是显示位置可以换成大写的E
# %e %E
# 作用:用科学计数法来表示数字、用科学计数法来表示数字(E大小)
print("%20e" % 800.123456) # 另外前面加字段长度也是可以的同上
print("%20E" % 800.123456)
# 输出结果
# 8.001235e+02
# 8.001235E+02
2.1.1.6 %g %G 的用法
根据值的大小长度自动转换成%e还是%f的显示方式,如果小数点后四位都为0的话,选择科学计数法;如果小数点后四位不全为0的话选择用%f的显示方式(6位且四舍五入)
# %g %G
# 作用:根据值的大小采用%e或者%f的方式显示,如果小数点后四位都为0的话,选择科学计数法,
# 如果小数点后四位不全为0的话选择%f的四舍五入方式(6位)
print("%g" % 0.00003333)
print("%g" % 0.33333353)
# 输出结果
# 3.333e-05
# 0.333334
2.2.2 format函数法
format函数讲究{ }(花括号)来替代和前面占位符中的‘%’的占位方式,格式为:str.format();从这里看出format也是一种类的调用方式
2.2.2.1 基本用法
通过下标或者默认顺序位的方式进行占位格式化操作
# 基本用法
print("{} {}".format("Hellow","world")) # 默认安装顺序的方式进行格式化输出
print("{1} {0}".format("Hello", "World")) # 默认安装format函数中的字段顺序,进行下标方式输出
# 输出结果:
# Hellow world
# World Hello
# 这里可以看出format当中的顺序位为(0, 1, 2, 3, ...),对应左侧花括号的位置。
2.2.2.2 设置参数用法
# 设置参数用法:
# 通过字符串型
print("网站名:{name}, 地址:{url}".format(name = "菜鸟教程", url = "www.runoob.com"))
# 输出结果:
# 网站名:菜鸟教程, 地址:www.runoob.com # 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址:{url}".format(**site)) # **site,是形参的一种表示方式**kwags类似于字典中的:后内容
# 输出结果:
# 网站名:菜鸟教程, 地址:www.runoob.com # 通过列表索引设置参数
my_list = ["菜鸟教程", "www.runoob.com"]
print("网站名:{0[0]}, 地址:{0[1]}".format(my_list)) #通过列表占位的方式,必须用0下标的格式输出{0[n]}
# 输出结果:
# 网站名:菜鸟教程, 地址:www.runoob.com
2.2.2.3 可用类结构传入对象
# 可以用类结构传入对象
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print("value 为:{0.value}".format(my_value)) # 0是可选的
# 输出结果:
# value 为:6
2.2.2.4 数字格式化方式
(1) ^、<、> 分别为居中对齐、左对齐、右对齐,后面的宽度也是可以执行的
(2) :表示后面填充的字符,只能是一个字符,不指定默认是空格填充
(3) + 表示在正数前面显示+号,- 表示在负数前面显示-号,空格表示整数前面加空格
# 数字格式化方式
# ^, <, > 分布为居中,左对齐,右对齐,后面可以指定宽度
# :号后面带填充的字符,只能是一个字符,不指定则默认是空格填充
# + 表示在正数前显示+,负数前显示-,空格表示正数前加空格
print("{:.2f}".format(3.1412926)) #保留小数点后两位
#输出结果:3.14
print("{:+.2f}".format(3.1415926)) # 保留小数点后两位且在数字前面加+号
#输出结果:+3.14
print("{:-.2f}".format(-3.1415926)) # 保留小数点后两位且在负数前面加-号
#输出结果:-3.14
print("{:.0f}".format(3.1415926)) # 不保留小数,如果是浮点数这样用
#输出结果:3
print("{: .0f}".format(3.1415926)) # 不保留小数,前面加一个空格
#输出结果: 3 print("{:*>10d}".format(5)) # 右对齐,其他位置填充*号(这里可填充的东西不限)
#输出结果:*********5
print("{:x<10d}".format(5)) # 左对齐,其他位置填充x号(同上)
#输出结果:5xxxxxxxxx
print("{:.^10d}".format(5)) # 居中对齐,其他位置填充.号(同上)
#输出结果:....5.....
print("{:>10d}".format(5)) # 右对齐,不填充
#输出结果: 5
print("{:<10d}".format(5)) # 左对齐,不填充
#输出结果:5 |空9个
print("{:^10d}".format(5)) # 居中对齐,不填充
#输出结果: 5 | print("{:,}".format(10000000)) # 按照三位方式填充,一般用于数字表示
#输出结果:10,000,000
print("{:.2%}".format(0.25)) # 保留小数点两位的百分数表示,添加百分号
#输出结果:25.00%
print("{:.1e}".format(1000000000)) # e前面的取0多少个
#输出结果:1.0e+09
2.2.2.5 b、d、o、x 分别为二进制、十进制、八进制、十六进制的显示方式,两次分汇编显示方式和C语言(python语言显示方式)显示方式
# b、d、o、x 分别是二进制、十进制、八进制、十六进制
print("{:b}".format(11)) # 汇编表示方式
#输出结果:1011
print("{:d}".format(11)) # 汇编表示方式
#输出结果:11
print("{:o}".format(11)) # 汇编表示方式
#输出结果:13
print("{:x}".format(11)) # 汇编表示方式
#输出结果:b
print("{:X}".format(11)) # 汇编表示方式
#输出结果:B print("{:#b}".format(11)) # C语言表示方式
#输出结果:0b1011
print("{:#d}".format(11)) # C语言表示方式
#输出结果:11
print("{:#o}".format(11)) # C语言表示方式
#输出结果:0o13
print("{:#x}".format(11)) # C语言表示方式
#输出结果:0xb
print("{:#X}".format(11)) # C语言表示方式
#输出结果:0XB
2.2.2.6 大括号(花括号)的转义表示
print("{} 对应的位置是 {{0}}".format("runoob")) # 可以使用大括号 {} 来转义大括号,返回一个{0}
# 输出结果:{0}
print("{} 对应的位置是 {{}}".format("runoob")) # 可以使用大括号 {} 来转义大括号,返回一个{}
# 输出结果:{}
2.2.2.7 format_map函数的用法
与format 函数差不多,只不过里面加入了一种字典形式
# format_map函数法 #
# 与format用法差不多,不过里面是一种字典形式的输出
print("{name} {Age}".format_map({"name": "Alex", "Age": 18}))
2.2.3 转义字符的使用
(1) "\" 续行符。作用:如果一行写的太多了写不开可以用这个来进行续行处理
# \ 续行符
# 作用,如果一行写的太多写不开用这个进行续行处理
print("生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂的日子生逢灿烂你好中国你好大家我们来来吧来吧可能\
C语言表示方式")
(2) "\\" 添加反斜杠符号
# \\
# 作用:反斜杠符号
print("生逢灿烂的日子\\"+"生逢灿烂的日子\\")
# 输出结果:
# 生逢灿烂的日子\生逢灿烂的日子\
(3) "\'" "\"" 添加单引号或者双引号
# \' 和 \"
# 作用:添加单引号和双引号
print("\'生逢灿烂的日子\'")
print("\"生逢灿烂的日子\"")
# 输出结果:
# '生逢灿烂的日子'
# "生逢灿烂的日子"
(4) "\a" 响铃
# \a
# 作用:响铃
print("生逢灿烂的日子\a")
(5) "\b" 退一格
# \b
# 作用:退一格
print("生逢灿烂的日子\b")
# 输出结果:
# 生逢灿烂的日
(6) "\e" 任意转义
# \e
# 作用:任意的转义
print("生逢灿烂的日子\e")
# 输出结果:
# 生逢灿烂的日子\e
(7) "\000" 空一格
# \000
# 作用:空
print("生逢灿烂的日子\000生逢灿烂的日子")
(8) "\n" 换行
# \n
# 作用:换行
print("生逢灿烂的日子\n这是换行后的字符串")
# 输出结果:
# 生逢灿烂的日子
# 这是换行后的字符串
(9) "\t" 横向制表符
# \t
# 作用:横向制表符
print("生逢灿烂的日子\t增加一个横向制表符")
# 输出结果:
# 生逢灿烂的日子 增加一个横向制表符
(10) "\v" 纵向制表符
# \v
# 作用:纵向制表符
print("生逢灿烂的日子\v增加一个纵向制表符")
(11) "\r" 返回起始位。作用:把前面的内容全部取消掉,重新进行打印
# \r
# 作用:返回起始位
print("生逢灿烂的日子\r这里是起始位,\r前面的字符不显示了")
# 输入结果:
# 这里是起始位,前面的字符不显示了
# 前面的字符不显示了
(12) r 转义取消
# r 转义取消
print("\rwww.cnblogs.com\noah0532\p\t8413534.html") # 如果有些字符前面由于显示组合形成了转义字符
# 输出结果:
# www.cnblogs.com
# oah0532\p 8413534.html
print(r"\rwww.cnblogs.com\noah0532\p\t8413534.html") # 通过在字符串前面加入一个取消转义
# 输出结果:
# \rwww.cnblogs.com\noah0532\p\t8413534.html # 正常显示
2.2.4 格式化输出的其他问题
2.2.4.1 大篇幅打印
在大篇幅打印的时候可以用大篇幅注释的方式进行打印
# 大篇幅的打印
print("""生逢灿烂的日子
生逢灿烂的日子生逢灿烂的日子
生逢灿烂的日子生逢灿烂的日子
""")
2.2.4.2 不换行横向输出方式
# 常用技巧
# 不换行横向输出
for x in range(0, 10):
print(x, end="")
输出结果:0123456789
Python笔记_第一篇_面向过程_第一部分_4.格式化输入和输出的更多相关文章
- python怎么写可读性好的面向过程的长篇代码?
最近接受老代码,mmp的,说是重新运行运行起来,那还不如重写呢,因为有很多毛病,不能直接运行,pep8就不用妄想奢望了,还有包括语法错误问题和内存严重泄露的问题(运行几分钟后python.exe进程达 ...
- Python笔记_第一篇_面向过程_第一部分_2.内存详解
Python的很多教材中并没有讲内存方面的知识,但是内存的知识非常重要,对于计算机工作原理和方便理解编程语言是非常重要的,尤其是小白,因此需要把这一方面加上,能够更加深入的理解编程语言.这里引用了C语 ...
- Python笔记_第一篇_面向过程_第一部分_7.文件的操作(.txt)
在平时,我们不光要对程序内的代码进行输入和输出的操作,还要对程序外的文件进行和语言之间的交换.操作和运算.在基础部分,先讲解对于外部的.txt文件的操作. 第一部分 基本内容讲解 1. 什么是文件 ...
- Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改
这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...
- 四、java基础-面向过程_对象_类中可出现的因素
1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...
- python自动化开发-[第五天]-面向过程、模块、包
今日概要: 1.内置模块 2.协程函数 3.递归 4.面向过程编程与函数编程 5.模块 6.包 7.re正则 一.内置模块 1.匿名函数lambda 定义:匿名函数通常是创建了可以被调用的函数,它返回 ...
- python第四周迭代器生成器序列化面向过程递归
第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...
- [Python笔记]第八篇:模块
本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...
- [Python笔记]第三篇:深浅拷贝、函数
本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import ...
随机推荐
- 微服务中springboot启动问题
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardS ...
- Windows和Ubuntu双系统时钟同步的方法。
参考文章 https://blog.csdn.net/zyqblog/article/details/79318955 电脑安装Ubuntu和Windows双系统以后,每次Ubuntu时间和时区设了以 ...
- jQuery原理系列-常用Dom操作
1. 事件绑定$(el).bind ie使用attachEvent,其它浏览器使用addEventListener,不同的是ie多了个on前缀,this绑定在window上,需要用call和apply ...
- HDU 4819 二维线段树
13年长春现场赛的G题,赤裸裸的二维线段树,单点更新,区间查询 不过我是第一次写二维的,一开始写T了,原因是我没有好好利用行段,说白一点,还是相当于枚举行,然后对列进行线段树,那要你写二维线段树干嘛 ...
- JavaScript获取当前日期前后7天的日期
function fun_date(aa){ var date1 = new Date(), time1=date1.getFullYear()+"-"+(date1.getMon ...
- 关于博主 5ab
博主是 5ab,一个 ZJ 初一大蒟蒻. 以 5ab 及类似名号在各大 OJ 出没. 欢迎来到 5ab 这个超级大蒟蒻的博客!!! My luogu blog 关于 5ab 的码风 大括号换行!!! ...
- MacOS通过ssh连接基于Virtualbox的Ubuntu虚拟机
以前总是用Windows软件putty进行ssh连接,今天尝试使用macos. 实验环境:主机:macos 10.15.3 客户机:Ubuntu 18.04 默认情况下,Ubuntu没有安装SSH,需 ...
- Android-寒假学习-阶段总结(20集)-口算测试APP
说在前面: 1.视频教程:https://www.bilibili.com/video/av60445113/?spm_id_from=333.788.videocard.0 2.老师的源码:http ...
- 51nod 1006:最长公共子序列Lcs
1006 最长公共子序列Lcs 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). ...
- 漫谈计算机组成原理(七)I/O系统
本文讲什么? 这个系列的文章其实可以分成两个部分,计算机系统的其他硬件结构和CPU. 而我们今天要讲述的内容,就是其他硬件结构中的最后一个部分--I/O(输入输出)系统. 这篇文章主要讲述的就是I/O ...