2.2 格式化输出
2.2.1 占位符
%s就是代表字符串占位符;%d是数字占位符,%i 也可以表示数字,如果把变量后⾯的换成%d,就代表必须只能输⼊数字这时对应的数据必须是int类型. 否则程序会报错,因此有时我们需要进行类型转换。
int(str) # 字符串串转换成int
str(int) # int转换成字符串串
注意:如果想要输出%而不是把它当作占位符输出,需要使用%%格式表示%转译成字符串。
2.2.2 类型一:%占位
注意:
1.占位符的数量与填充的数量必须要一直,不一致时程序报错。
2.填充时,内容与占位符顺序必须一直
name = input('请输入姓名')
age = input('请输入年龄')
hobby = input('爱好是啥')
gsh = '我是%s,年龄%s,爱好%s' %('name','age','hobby')
print(gsh)
name = input("name :")
age = input("age:")
job = input("job:")
inf = '''
--------------inf of %s-------------
name : %s #显示名字
age : %d #显示年龄
job : %s #显示职业
------------------------------------
''' %(name,name,int(age),job) #这里的% 就是把前边的变量和括号里的变量连接起来
print(inf)
注意:在对age进行类型转换时,需使用int(age),要在使用时进行转换或者用下边的方式进行重新转换赋值
age = input("age:")
age = int(age)
2.2.3 类型二 f{}占位
f"alex{ },{'aa'}",3.6版本及以上才能使用,aa如果没有引号表示变量名,对其应有赋值运算。
msg = f'''
name:{input('name:')}
age:{input('age:')}
sex:{input('sex:')}
job:{input('job:')}
'''
print(msg)
注意''," ",''' ''',""" """之间的嵌套区别使用,例:
f"name:{},{"name"}" #两个""的连续使用,致使name无效,程序报错
2.3.1 算数运算
a = 10 b = 21
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法运算 | a + b = 31 |
- | 减法运算 | a - b = -11 |
* | 乘法运算 | a * b = 210 |
/ | 除法运算 | b / a =2.1 |
% | 模运算,返回余数 | b / a = 1 |
** | 幂运算 | a**b ,10的21次方 |
// | 整除取余 | b // a = 2 |
2.3.2 比较运算
a = 10 b = 20
运算符 | 描述 | 示例 |
---|---|---|
== | 相等为真 | a == b 为Flase |
!= | 不相等为真 | a != b为True |
> | 左边大于右边为真 | a > b 为Flase |
< | 右边大于左边为真 | a < b 为True |
>= | 左边大于等于右边为真 | a>=b 值为Flase |
<= | 右边大于等于左边为真 | a <= b值为True |
2.3.3 赋值运算
a = 10 b = 20
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算 | c = a + b = 30 |
+= | j加法赋值运算 | c += a等价于c = c + a |
-= | 减法赋值运算 | c -= a 等价于 c = c - a |
*= | 乘法赋值运算 | c *= a 等价于 c = c * a |
/= | 除法赋值运算 | c /= a 等价于 c = c / a |
%= | 取模赋值运算 | c %= a 等价于 c = c % a |
**= | 幂赋值运算 | c **= a 等价于 c = c ** a |
//= | 整除赋值运算 | c //= a 等价于 c = c // a |
2.3.4 逻辑运算符
假设变量a的值为True,变量b的值为False
运算符 | 描述 | 示例 |
---|---|---|
and | 如果两个操作数都为真,则条件成立 | (a and b)的结果为False |
or | 如果两个操作数中的任何一个非零,则条件成为真 | (a or b)的结果为True |
not | 用于反转操作数的逻辑状态 | not(a and b) 的结果为True |
针对逻辑运算的进⼀步研究:**
1.在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。运算符要作为整体进行比较
( ) > not > and > or
2.x or y , x为真,值就是x,x为假(x是0),值是y
x and y, x为真,值是y,x为假,值是x
2.3.5 编码问题
python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASSIC),⽽python3对内容进行编码的默认为utf-8。
最早的计算机编码是ASCII。 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII。
GBK 把中国的文字进行编码。对ASCII扩充。 16bit => 2byte 主要包含了中文, 日文, 韩文, 英文(兼容ASCII)
UNICODE 32bit 兼容各个国家的编码-万国码- 浪费空间 32bit => 4byte
UTF-8 可变长度的UNICODE,本质是UNICODE。
英文在UTF-8——占用1个字节 8bit
欧洲文字——占用2个字节 16bit
中文——占用3个字节 24bit
UTF-16,最少用2个字节
8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024PB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
2.3.6 成员运算符in、not in
1. while
while 条件:
循环体
else:
循环在正常情况跳出之后会执⾏该命令
#例子
index = 1
while index < 11:
if index == 8:
# break
pass
else:
print(index)
index = index+1
else:print("你好")
注意:
如果循环是通过break退出的. 那么while后⾯面的else将不会被执行, 只有在while条件判断是假的时候才会执行这个else。
pass: 不表⽰任何内容,为了代码的完整性,占位而已,目的是不妨碍下边命令继续运行
2. in 、not in
可以判断某一小部分字符串是否出现在其他字符串中
content = input("请输入你的评论")
if "hello" in content or 'hello world' in content:
print('您输入的字符不在该范围内')
else:
print("在在在")
2.3.7 身份运算
is --》是
is not --》不是