import math
Radius = 3
Area = Radius**2*math.pi
print("周长为%d的圆的面积是%.3f"%(Radius, Area))
输出结果为:
周长为3的圆的面积是28.274
import math
Radius = 3
Area = Radius**2*math.pi
print("周长为{0}的圆的面积是{1:.3f}".format(Radius, Area))
输出结果为:
周长为3的圆的面积是28.274
**import math
Radius = 3
Area = Radius**2*math.pi
print(f"周长为{Radius}的圆的面积是{Area:.3f}")**
输出结果为:
周长为3的圆的面积是28.274
从上面三种风格的格式化输出,我得出以下结论:
>>> x,y,z = 1,3,4,5
Traceback (most recent call last):
File "" , line 1, in <module>
x,y,z = 1,3,4,5
ValueError: too many values to unpack (expected 3)
>>>
这是由于接收个数比输出个数少的原因,因此无法正确解包
>>> x, y, z = 1, 2
Traceback (most recent call last):
File "" , line 1, in <module>
x, y, z = 1, 2
ValueError: not enough values to unpack (expected 3, got 2)
>>>
这是由于接收个数比输出个数多的原因,因此无法正确解包
因此在使用序列解包的时候一定要保证接收和输出的个数相等
当然也有例外的情况,当使用列表切片时,且切片连续时是可以不用相等的!
>>> x = [i for i in range(5)]
>>> x
[0, 1, 2, 3, 4]
>>> x[:3] = map(str, range(6,10))
>>> x
['6', '7', '8', '9', 3, 4]
>>>
>>> x = ['6', '7', '8', '9', 3, 4]
>>> print(*x)
6 7 8 9 3 4
>>>
>>> x = ('6', '7', '8', '9', 3, 4)
>>> print(*x)
6 7 8 9 3 4
>>> x = {'x':1, 'y':2, **{'z':3, 'a':4}}
>>> x
{'x': 1, 'y': 2, 'z': 3, 'a': 4}
>>>
>>> [p for p in range(2,100) if 0 not in [p%d for d in range(2, int(p**0.5+1))]]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
>>>
上述利用列表推导式求出100以内所有素数。
>>> x = (p for p in range(2,100) if 0 not in [p%d for d in range(2, int(p**0.5+1))])
>>> x
<generator object <genexpr> at 0x0000016439F00F48>
>>> print(x)
<generator object <genexpr> at 0x0000016439F00F48>
>>> print(*x)
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
>>>
上述是利用生成器表达式求出100以内的所有素数。可以发现生成器表达式是不可以直接输出的,因此你可以通过将其转化为列表或者元组,或者通过生成器对象__next__方法,或者通过内置函数next()这些方式访问。
>>> x = (p for p in range(2,100) if 0 not in [p%d for d in range(2, int(p**0.5+1))])
>>> x.__next__()
2
>>> next(x)
3
>>>
值得注意的是,生成器访问过的对象便不存在了,因而无法再次访问。
>>> x = (p for p in range(2,100) if 0 not in [p%d for d in range(2, int(p**0.5+1))])
>>> x.__next__()
2
>>> next(x)
3
>>> 3 in x
False
>>> 5 in x
False
>>>
大家一定不难理解3为什么不在x里,但是为什么5也不在x里呢?原因是因为在执行3 in x的时候,已经遍历整个生成器对象,此时生成器对象已经没有任何一个对象了!