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
原文:https://blog.51cto.com/u_15149862/2760852