输入输出&格式化

一、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='\n', file=None)

sep参数:分隔的符号,默认是一个空格

end参数:打印后的结束方式,默认为换行符\n.如果,设置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}

猜你喜欢

转载自www.cnblogs.com/xiaohei001/p/10111130.html