欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python3 开发面试题(%s和format的区别)5.31

程序员文章站 2022-03-17 09:41:43
在格式化字符串中有两种方法: 1、%s 2、format 大家常用的是哪一种方法?为什么要用你选的这种方法? 我们先看一个例子: 首先我们定义一个我军需要击杀的*的地理坐标为 c=(128,128) format的常见方法: ......

在格式化字符串中有两种方法:

  1、%s

  2、format

大家常用的是哪一种方法?为什么要用你选的这种方法?

我们先看一个例子:

首先我们定义一个我军需要击杀的*的地理坐标为 c=(128,128)

# 利用%进行字符串格式化
print("向他开炮:%s" % c)  #报错

TypeError: not all arguments converted during string formatting

print("向他开炮:%s" % (c, ))  #正确的写法

# 用format进行字符串的格式化
print("向他开炮:{}".format(c))

format的常见方法:

#通过关键字
d1 = {"name": "duoduo", "age": 18}
# s = "{name} is {age} years old.".format(d1["name"], d1["age"])
s = "{name} is {age} years old.".format(**d1)
print(s)


#通过对象属性
class Person():

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "{self.name} - {self.age}".format(self=self)


p1 = Person("duoduo", 18)
print(p1)


#通过下标
l1 = ["duoduo", 18]
# s = "{} is {} years old. {} 帅。".format(l1[0], l1[1], l1[0])
# s = "{0} is {1} years old. {0} 帅。".format(l1[0], l1[1])
s = "{0[0]} is {0[1]} years old. {0[0]} 帅。".format(l1)
print(s)


#填充与对齐
print("duoduo".center(20, "*"))      #填充左右
print("{:>10}".format("duoduo"))   #左边空格填充
print("{:0>10}".format("duoduo"))   #左边0填充
print("{:*>10}".format("duoduo"))   #左边*填充
print("{:*^10}".format("duoduo"))   #左右填充
print("{:*<10}".format("duoduo"))   #右边用*填充

print("duoduo".zfill(18))    #  0填充

print("{:.2f}".format(3.141592653))     #保留两位小数
print("{:b}".format(10))   #二进制
print("{:d}".format(10))   #十进制
print("{:o}".format(10))   #八进制 
print("{:x}".format(10))   #十六进制


print("{:,}".format(1000000))   # 千分位格式化