首页 > 其他 > 详细

20210508 字符串的格式化输出

时间:2021-05-08 16:15:12      阅读:12      评论:0      收藏:0      [点我收藏+]
Example A: "found the needle at position " plus the index it found the needle, so: find_needle([‘hay‘, ‘junk‘, ‘hay‘, ‘hay‘, ‘moreJunk‘, ‘needle‘, ‘randomJunk‘]) should return "found the needle at position 5" Solution: def find_needle(haystack): return ‘found the needle at position {}‘.format(haystack.index(‘needle‘))
Example B:
add_length(‘apple ban‘) => ["apple 5", "ban 3"]
add_length(‘you will win‘) => ["you 3", "will 4", "win 3"]
Solution:
def add_length(str_):
    return [‘{} {}‘.format(a, len(a)) for a in str_.split(‘ ‘)]
1-1
# 现在想打印这样的一种格式
info = ‘‘‘
------- info of $ -------
Name:
Age:
Job:
Salary:
‘‘‘
# 应该怎样打印?这就涉及到格式化输出
username = input("name:")
password = input("age:")
job = input("job:")
salary = input("salary:")
# 怎么打印? print(info)?但是怎么将变量和字符串结合起来???

1-1-1  字符串拼接
name = input("name:")
age = input("age:")
job = input("job:")
salary = input("salary:")
info = ‘‘‘
------- info of ‘‘‘+name+‘‘‘ -------
Name:‘‘‘+age+‘‘‘
Age:‘‘‘+job
# Job:
# Salary:
# ‘‘‘
print(info)
# 这样虽然格式化输出了,但是又 low 又 麻烦
1-2 有一种更方便的办法
# 在 shell 脚本中,用 $ 引用变量
# 在python 中,用%
name = input("name:")
age = input("age:")
job = input("job:")
salary = input("salary:")
info = ‘‘‘
-------- info of %s -----
Name: %s
Age: %s
Job: %s
Salary: %s
‘‘‘ % (name, name, age, job, salary)
print(info)  # 顺序必须是一样的,%s 代表 string

1-2-1 但是 age 是整数,所以
name = input("name:")
age = input("age:")
job = input("job:")
salary = input("salary:")
info = ‘‘‘
-------- info of %s -----
Name: %s
Age: %d
Job: %s
Salary: %s
‘‘‘ % (name, name, age, job, salary)
print(info)
# %d 表示接受数字,但是 %s 也是没有问题的
# 为什么用 %d, 作用是帮助检测验证 数据类型
# %f 表示浮点,小数

1-2-2
# 现在运行 1-2-1
--->
name:Taburiss
age:99999
job:zxcv
salary:1000
Traceback (most recent call last):
  File "C:\Users\Taburiss\PycharmProjects\s14\Trial01\trans_test.py", line 6, in <module>
    info = ‘‘‘
TypeError: %d format: a number is required, not str
‘‘‘
# 结果是报错了 TypeError: %d format: a number is required, not str‘
# 因为输入的不是数字,只是看起来是 数字
# python 默认所有输入都是 字符串,所有需要把 Age 转成数字

1-2-3
name = input("name:")
age = int(input("age:"))   # integer
print(type(age), type(str(age)))
job = input("job:")
salary = input("salary:")
info = ‘‘‘
-------- info of %s -----
Name: %s
Age: %d
Job: %s
Salary: %s
‘‘‘ % (name, name, age, job, salary)
print(info)

1-2-4
name = input("name:")
age = int(input("age:"))   # integer
print(type(age), type(str(age)))
--->
name:Taburiss
age:99999
<class ‘int‘> <class ‘str‘>
2-1
# 除了这种字符串格式化的方式,还有别的吗???
# python2 中的 raw_input 和 python3 中的 input 是完全一样的,但是在 python2 中还有一个 input
# python2 中的 input 不要用,因为它接受的是什么格式,就认为是什么格式;不加双引号会认为是变量
# 所以 3.0 中去掉了
# 刚刚是 + 和 %;除此之外还有一种方式
# 第 3 种方式就是 用 format
name = input("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")

info2 = ‘‘‘
-------- info of {_name} -----
Name: {_name}
Age: {_age}
Job: {_job}
Salary: {_salary}
‘‘‘ .format(_name=name,
            _age=age,
            _job=job,
            _salary=salary)

print(info2)
# 在一些特定化场景,格式化拼接只能用这个

2-2
# 也可以不指定参数,但是要求顺序必须没有问题
# format 可以用这两种
# 打印列表的 三种格式,忘记拼接,不要用拼接,加号拼接 内存多,不推荐
name = input("name:")
age = int(input("age:"))   # integer
print(type(age), type(str(age)))
job = input("job:")
salary = input("salary:")

info3 = ‘‘‘
-------- info of {0} -----
Name: {0}
Age: {1}
Job: {2}
Salary: {3}
‘‘‘ .format(name, age, job, salary)

print(info3)
# 不过,这种方式如果参数过多,就不会足够清晰
3-1
format 格式化
name = "my name is {name} and i am {year} old"
print(name.format(name=‘aether‘,year=999))
--> my name is aether and i am 999 old
总结:
1 input;
2 格式化拼接的三种方式,%和format

20210508 字符串的格式化输出

原文:https://blog.51cto.com/u_15149862/2760852

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!