1、格式化输出
name='小赵'
age=18
#print('大家好,我是'+name+'我今年'+age+'岁了') #字符串和整型不能拼接
print('大家好,我是'+name+'我今年'+str(age)+'岁了')#把整型转换成字符串输出,但比较麻烦
print('大家好,我是',name,'我今年',age,'岁了') #虽然数据与数据之间隔开输出,但也比较麻烦
上述几个例子中不同类型变量一块输出的方式比较麻烦,在以后写代码的过程中,经常会涉及到字符串和其他变量在一起输出使用的环节,但如果变量不是纯字符串,而是int/float/其他类型的数据,拼接在一起就很容易就会出错,所以这时候就可以使用格式化输出
所谓格式化-->就是一种更方便更好用地输出方式
1.可以让你更方便的输出带有变量的数据
2.可以让你更方便的输出一些固定格式的数据
尊敬的XX您好,您X月的账单已经发送,您使用话费共XX元
1.有标准格式
2.里面的X都可以用具体的变量来代替
1.1 第一种格式化输出方式:f-str
语法:在字符串前面加f,在字符串里把要输出的变量,用{}大括号包裹起来
f'XXX{变量}XXX'
name='小赵'
age=18
print(f'大家好,我是{name},我今年{age}岁了')
print(f'大家好,我是{name},我今年{age}岁了,钱包余额还有{8.8}元') #大括号里面也可以放具体的数据
大括号里的变量也是可以进行操作的,可以进行数值运算,切片,索引
age=8
print(f'大家好,我是{name[1]},我今年{age+10}岁了,钱包余额还有{8.8}元')
1.2第二种格式化输出方式--占位符%
占位符概念-->先占个位置,后续再用具体的数据来顶上
形参:没有具体的数据,只是先占个位置--角色
实参:有具体的数据,在运行时取代形参--演员
语法:
'XX%sXX'%数据
'XX%sXX%d'%(数据1,数据2)
%s 给str占位置,后续会来一个字符串
%d 给int占位置,后续会来一个整型
%f 给float占位置,后续会来一个浮点型(默认6位小数)
%.1f-->带一位小数
%.2f-->带两位小数
%.xf-->带x位小数
name='小赵'
age=18
print('我今年%d岁'%age)
print('我是%s,今年%d岁'%(name,age))
print('我是%s,今年%d岁,现在还剩%f元'%(name,age,88.88))
print('我是%s,今年%d岁,现在还剩%.2f元'%(name,age,88.88))
print('我是%s,今年%d岁,现在还剩%.2f元'%(name[1],age+10,88.88))
#print('我是%s,今年%d岁,现在还剩%.2f元'%(name,'十八',88.88)) #%d是给整型占位,要传字符串就会报错
print('我是%s,今年%d岁,现在还剩%.2f元'%([1,2,3],age,88.88))
print('我是%s,今年%d岁,现在还剩%.2f元'%((1,2,3),age,88.88)) #要传列表或者元组可以用%s占位
小细节:
%除了可以放变量,也可以直接放数据
放的都是已知数据,类型是固定死的
一个位置一个坑,少了位置和多了位置都不可以
%s的包容性比较强,数据是整型、浮点型、列表、元组都接收,但是不要所有的类型都用%s占位
%d和%f是必须来对应的数据
1.3 第三种格式化输出方式--format
用法跟占位符f-str类似,它先用大括号作为占位符,在字符串后面通过.format来传递数据
语法:
'XX{}XX'.format(数据)
'XX{}XX{}'.format(数据1,数据2)
'XX{下标}XX{下标}'.format(数据1,数据2)
name='小赵'
age=18
print('我是{},我今年{}岁'.format(name,age))
print('我是{},我今年{}岁,今天是疯狂{},v我{}买炸鸡'.format(name,age,'星期四',50))
#大括号里面要么全放下标,要么全不放,下标也不支持负向下标
print('我是{3},我今年{0}岁,今天是疯狂{1},v我{2}买炸鸡'.format(age,'星期四',50,name))
print('我是{},我今年{}岁,今天是疯狂{},v我{}买炸鸡'.format(name[1],age,'星期四',50+100))
结合循环遍历,可以做到比较有仪式感的问候
如果一个数据会反复使用,写上对应的下标就可以了,不需要反复的传数据
names=['芦苇','章章','大地瓜','zr']
for i in names:
print('''
{0}年快乐,{1}在这里,祝{2}新年快乐
身体健康,往事如意,心想事成
----{1}致辞
'''.format('龙','小赵',i))
2、基本运算符
2.1算数运算符
跟数学优先级一样 (先乘除后加减)
+ | 加 | 1+1输出结果为2 |
---|---|---|
- | 减 | 1-1输出结果为0 |
* | 乘 | 2*2输出结果为4 |
/ | 除 (得到的结果为浮点型) | 10/2输出结果为5 |
% | 取余 | 10%3输出结果为1 |
// | 整除 | 10//3输出结果为3 |
** | 幂(乘方) | 2**4输出结果为16,即2*2*2*2 |
10%3 #输出结果为1
10-3-3-3=1,最后剩下的数就是余数
10//3 #输出结果为3
10除3=3.3333333333333335,去掉后面的小数就是他的整除数
2**4 #输出结果为16 2的4次方
2*2*2*2
>>> a=1
>>> b=2
>>> a+b
3
>>> a*b
2
>>> a/b
0.5
>>> a-b
-1
>>> 10%3
1
>>> 10%4
2
>>> 10/3
3.3333333333333335
>>> 10//3
3
>>> 10//4
2
>>> 3**4
81
>>> 2**4
16
这些代码都是在交互模式省略了print进行快速测试输出的,所以没有print输出
2.2 赋值运算符
将=号右侧的结果赋值给等号左侧的变量,需要赋值给谁就把谁放在最左边
= | 赋值运算符 | c = a + b(赋值运算符的程序是从右往左执行) |
---|---|---|
+= | 加赋值 | a+=b 等价于 a=a+b |
-= | 减赋值 | a-=b等价于 a=a-b |
*= | 乘赋值 | a* =b等价于 a=a *b |
/= | 除赋值 | a/=b等价于 a=a/b |
%= | 取余 | a%=b等价于 a=a%b |
//= | 整除 | a//=b等价于 a=a//b |
**= | 幂 | a* *=b等价于 a=a * * b |
>>> a=1
>>> b=2
>>> c=a+b
>>> c
3
>>> a+=b
>>> a
3
>>> a-=b
>>> a
1
>>> print(a+=b) #加赋值的操作,赋值的时候是不能用print直接打印
SyntaxError: invalid syntax
>>> a*=b #赋值完后
>>> print(a) #再打印看具体结果
2
2.3 比较运算符
得到的结果为bool类型
在python中,一个等号是用来赋值,两个等号才是判断是否相等
> | 大于 |
---|---|
< | 小于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
!=(英文符号) | 不等于 |
>>> 66<88
True
>>> 66>88
False
>>> 66==88
False
>>> 88==88
True
>>> a=7
>>> b='7'
>>> a==b
False
>>> 'a'=='A'
False
>>> '小赵'=='小赵'
True
>>> "小赵"!='小赵'
False
>>> 7==7.0
True
2.4 逻辑运算符
得到的结果为bool类型
代码 | 含义 |
---|---|
and | 与 and左右两边的值必须都为真的时候才为真,否则为假 -- >‘和’ |
or | 或 or左右两边的值其中有一个真即为真,全假才为假 -- >‘或’ |
not | 非 就是将值为真的变成假的 假的变成真的 -- >‘非’ 取反,死杠精什么东西都和你反着来 |
>>> python=98
>>> math=70
>>> python>=95 and math>=90
False
>>> python>=95 or math>=90
True
>>> python>=95 and math>=60
True
>>> python>=100 or math>=90
False
>>> not True
False
>>> not False
True
2.5 成员运算符
得到的结果为bool类型
代码 | 含义 |
---|---|
in | 判断成员是否在序列中 |
not in | 判断成员是否不在序列中 |
#序列类型中:字符串,元组,列表
>>> talk='小赵很聪明'
>>> '笨' in talk
False
>>> '聪明' in talk
True
>>> '笨' not in talk
True
>>> '聪明' not in talk
False
>>> 1 in [1,2,3]
True
>>> '1' in [1,2,3]
False
>>> 1 in 1
TypeError: argument of type 'int' is not iterable
>>> '哈哈' not in (1,'哈哈',2)
False
2.6 运算优先级
符号 | 描述 |
---|---|
() | 小括号 |
** | 幂(乘方) |
*、/、//、% | 算术运算符 |
+、- | 算术运算符 |
<、>、<=、>=、==、!= | 比较运算符 |
in、not in | 成员运算符 |
not > and > or | 逻辑运算符 |