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

2018-06-18 03:15:42来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

  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))   # 千分位格式化

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python学习-基础知识-1

下一篇:个人第一篇博客,就先来个猴子选大王把!!!