输入输出&格式化
Posted xiaohei001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入输出&格式化相关的知识,希望对你有一定的参考价值。
一、input输入函数
input函数:获取用户输入,保存成一个字符串。哪怕你输入的是个数字1,返回给你的只会是个字符串"1",而不是整数1,例如;
inp = input("please input your name") # 输入操作 print(inp) print(type(inp)) # 查看数据类型,str类型 inp = input("pleas input your age") print(inp) print(type(inp)) # 查看数据类型,str类型 inp = input("请输入一个字符:") print(type(inp)) inp = input("请输入一个字符: ") print(inp)
第一个例子:inp = input("please input your name") input函数里可以提供一个字符串,用来给用户进行输入提示的。input函数的返回值赋值给inp这个变量后,inp里就保存了用户输入的值。
type是Python内置函数之一,非常有用,用于查看对象的数据类型,例子中的inp是一个str类型,这验证了保存成一个字符串类型。
第二个例子:当输入的时候我们输入数字类型,但是使用type查看类型的时候,显示的是str类型。
第三个例子:什么也不输入只是一个空的时候,显示的也是一个str类型。
第四了例子:什么也没输入直接敲回车,结果还是str类型。
从上面例子中的展示,不难发现,input函数将我们输入原样不动的返回给我们,并包装成一个字符串,这肯定是不行的,通常需要对用户输入的进行处理和判断。
1.对空格输入进行处理
inp = input("please input your name: ") if inp == "": # 如果是空格则执行 print("不能输入空格,请重新输入")
2.将字符串转换为数字类型
age = input("Please input your age:") age = int(age) # 转换为数字 if age > 18: print("adult") else: print("Not an adult")
3.去除空格
lstrip:去除开头空白
rstrip:去除结尾空白
strip:去除两端的空白
inp = input("please input your name:") inp = inp.strip() # lstrip 和 rstrip 使用一样的 print(inp)
4.判断输入的字符类型
前面我们将字符串转换为整数用的是int()函数,这种方式有危险的。比如;
a = "123" a = int(a) print(type(a)) # 转换数字类型 b = "Jerry" b = int(b) print(b) # 报错信息 ValueError: invalid literal for int() with base 10: ‘Jerry‘
对于"123"的字符串转换时没问题的,但是对于包含字符、特殊字符的字符串就没有办法转换了,就是弹出异常。所以在使用int函数之前,要先判断输入的是否是全是数字。比如;
age = input("please input your age: ") if age.isdigit(): # 使用isdigit()函数判断输入的是否全是数字 age = int(age) print("Your age is ", age) else: print("lllegal input !!!")
5.阻塞或暂停程序
print("1") input("请按回车继续......") # 阻塞 print("2")
input函数不会将输入保存下来,只是暂停程序动作。
二、print输入函数
print在Python3.x是一个函数,在Python2.x
print函数已经不陌生了,用了这么久多少有点经验了,明白他的用法。
print函数用于将内容格式化显示在标准输出上,主要指的是屏幕显示器。
print可以接受多个字符串,字符串类型的变量或者print的最想。每个字符串用逗号 “ , ”隔开,连成一串输出,print会一次打印每个字符串,同时每遇到一个逗号就输出一个空格。
a = "name" b = "please input" print(b, "your", a) # 打印结果:please input your name 自动以空格分隔 print(b + "your" + a) # please inputyourname 没有分隔
对于 print(b + "your" + a)的语句,其实是先计算b + "your" + a的值,然后在通过print打印他,print()会自动执行内部的语句。比如;
a = 10 b = 3 print(sum((a, a * b))) # 先求出a*b的乘积,在加上a的值 # 结果为 40
参数
我们看一下print函数的原型:print(self, *args, sep=‘ ‘, end=‘ ‘, file=None)
sep参数:分隔的符号,默认是一个空格
end参数:打印后的结束方式,默认为换行符 .如果,设置end="",则不换行,让print在一行内连续打印。
a = "your" b = "name" print(a, "1", b, sep=" ") # 分隔 print(a, "1", b, end="x") # 结尾追加x字符
三、print格式化输出
在Python2.6以后,有两种格式化输出的方法。
一种是类似C语言中printf%百分号格式化输出,也是Python最基础最常用的格式化输出方法。另一种就是str.format()的方式。
1. % 百分号格式化输出
print("我叫 %s 今年 %d 岁。" % ("小黑", 31)) # 结果为: # 我叫 小黑 今年 31 岁。
首先构造一个字符串 "我叫 %s 今年 %s 岁。" ,将其中需要用别的变量或值替代的部分,用 % 百分符号加上一个数据类型代号,比如%s、%d来代替,然后在字符串的后面用%加一个同样的数量的变量或值得元组。
也就是前面有多少个%符号,后面就要提供多少个参数值,每个参数值之间用逗号隔开,所有的参数用圆括号括起来,每个参数前面的% 要一一对应,并且数据类型也要能够合法对应。
格式化符号
格式化操作辅助命令
经典例子:
s = "i am %s." % "jack" s = "i am %s age %d" % ("jack", 20) s = "percent %.2f" % 99.974154 s = "i am %(name)s age %(age)d" % {"name": "jack", "age": 20} s = "i am %(k1).2f" % {"k1": 1212.121212} s = "i am %.2f %% " % 1212.121212 print(s)
需要说明的是,如果你想在Print中打印一个%百分号本身,那么需要使用 %% 两个百分号转义一个百分号。
如果你对print复杂的格式控制无爱,对美观没有要求,那么傻瓜式的一路用%s占位符,可以省事。
print("%s %s %s %s %s" % (a, b, c, d, e))
2.str.format()格式化输出
这种格式化方法是2.6以后出现的,新增了一种格式化字符串的函数 str.format(),他增强了字符串格式化的功能。
基本语法是通过 { } 和 : 来代替以前的 %。
format函数可以接受不限个参数,位置可以不按顺序。
不限制参数
print("{} {}".format("hello", "world")) # 不设置指定位置,按默认顺序 print("{0} {1}".format("hello", "world")) # 设置指定位置 print("{1} {0} {1}".format("hello", "world")) # 设置指定位置
设置参数
print("网站名:{name},地址{url}".format(name="1024", url="www.1234.com")) # 字典形式设置参数 site = {"name": "1024", "url": "www.1234.com"} print("网站名:{name},地址{url}".format(**site)) # 列表索引设置参数 my_list = ["1024", "www.1234.com"] print("网站名:{0[0]},地址{0[1]}".format(my_list)) # "0"是必须的
结果为:
网站名:1024,地址www.1234.com 网站名:1024,地址www.1234.com 网站名:1024,地址www.1234.com
str.format()传入对象
class AssignValue(object): def __init__(self, value): self.value = value my_value = AssignValue(10) print("value 为: {0.value}".format(my_value)) # 结果为:10
数字格式化
展示str.format()格式化数字的方法
print("{:.2f}".format(3.1415926))
^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
此外我们可以使用大括号 {} 来转义大括号,如下实例:
print("{}对应的位置是{{0}}".format("runoob")) # 结果为 # runoob对应的位置是{0}
以上是关于输入输出&格式化的主要内容,如果未能解决你的问题,请参考以下文章
片段(Java) | 机试题+算法思路+考点+代码解析 2023
C语言基础:输入( printf() getchar()gets() )& 输出( scanf()putchar()puts() )格式化输入输出
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段