格式化输出
示例,现在有一需求,问用户的姓名,年龄,工作,爱好,然后将其打印成以下格式。
---------- info of Mark ----------
Name : Mark
Age : 22
Job : Ops
Hobby : PingPong
---------- end ----------
实现方法如下,虽然字符串拼接的方式可以实现这种格式的输出,但是很麻烦,所以可以使用下面简单的方法——解锁新姿势~
只需要把需要打印的格式先准备好,由于里面的一些信息是需要用户输入的,没有办法预先知道,因此可以先放置一个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦。如下操作:
注: 看的时候有点懵😵,操作一遍就明白啦,如同任督二脉被打通一样 hhh
name = input("Name: ")
age = input("Age: ")
job = input("Job: ")
hobby = input("Hobby: ")
# 下面的每一个%s就是字符串里的一个占位符
info = '''
---------- info of %s ----------
Name : %s
Age : %s
Job : %s
Hobby : %s
---------- end ----------
''' % (name, name, age, job, hobby) # 这行的%就是把前面的字符串(%s)和括号里面的变量关联起来。
# 变量与字符串是逐行关联的,比如info of %s,关联的就是括号里的第一个变量name。Hobby : %s,关联的就是最后一个变量hobby。
#%s是在字符串里的占位符,和字符串外%号后面括号里跟的数据是一一对应的。
print(info)
# 输出结果如下
Name: Mark
Age: 22
Job: Ops
Hobby: PingPong
# 看,和要求的一摸一样啦
---------- info of Mark ----------
Name : Mark
Age : 22
Job : Ops
Hobby : PingPong
---------- end ----------
Process finished with exit code 0
占位符
- %s 是代表的字符串占位符 # s = string,字符串
- %d 是代表的数字占位符 # d = digit,数字
- %f 是代表的浮点数占位符 # f = float,浮点数
转换数据类型
str转int类型
如果把上边的age后面的%s换成%d,就代表你必须只能输入数字啦,但是不能直接换掉,因为input接收的所有输入默认都是字符串格式!
直接换掉,没有做其它更改的就会报如下错误啦。
Traceback (most recent call last):
File "C:/Users/tgw/PycharmProjects/pythonProject/day1/格式化输出.py", line 14, in <module>
''' % (name, name, age, job, hobby)
TypeError: %d format: a number is required, not str
Process finished with exit code 1
上面其它的更改指的就是下面的操作啦——将age变量从字符串str类型转换成数字int类型。
age = int(input("Age: "))
print(type(age)) # 可以通过type查看age的类型
<class 'int'> # 看,转变成int类型了
相反,把数字转换成字符串也是必然可以的啦,str(yourStr)
int转str示例1
age = 22
print(age)
print(type(age))
print(str(age))
print(type(str(age)))
# 输出结果
22
<class 'int'>
22
<class 'str'> # 转变啦
Process finished with exit code 0
int转str示例2
age = 22
print(age)
print(type(age))
age = str(age)
print(age)
print(type(age))
# 输出结果
22
<class 'int'>
22
<class 'str'> # 转变啦
Process finished with exit code 0