1. 程式人生 > >python3 開發面試題(%s和format的區別)5.31

python3 開發面試題(%s和format的區別)5.31

什麽 字符 color 對象屬性 pri arguments 坐標 保留兩位小數 面試題

在格式化字符串中有兩種方法:

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

python3 開發面試題(%s和format的區別)5.31