1.2-python基础二
目录
python基础知识
1. 格式化输出
需求:搜集用户姓名,年龄,工作,爱好,然后打印成以下格式:
'''
-------------------- info of 黑色利穆 --------------------
Name: 黑色利穆
Age: 25
Job: OPS
Hobby: Book
-------------------- end --------------------
'''
把需要打印的格式先准备好,需要用户输入的信息先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系:
name = input("Name: ")
age = input("Age: ")
job = input("Job: ")
hobby = input("Hobby: ")
info = '''
-------------------- info of %s --------------------
Name: %s
Age: %s
Job: %s
Hobby: %s
-------------------- end --------------------
''' %(name, name, age, job, hobby)
print(info)
# info = '''
# -------------------- info of %s -------------------- # 这里的每个%s就是一个占位符,本行的代表后边括号里的name
# Name: %s # 代表 name
# Age: %s # 代表 age
# Job: %s # 代表 job
# Hobby: %s # 代表 hobby
# -------------------- end --------------------
# ''' %(name, name, age, job, hobby) # % 就是把前面的字符串与括号里的变量关联起来
%s 代表字符串占位符
%d 代表数字占位符
遇坑:
如果将上边age 后的占位符改成 %d,就代表只能输入数字:
step1:Age: %d
step2:执行 发现报错如下:
TypeError: %d format: a number is required, not str
step3:查看age数据类型,print(type(age)) # <class 'str'>,发现age是str
原因:input接收的所有输入默认都是字符串格式。
解决:把str转成int: age = int(input("Age: "))
问题:我现在要输出我的学习进度,可是%是占位符怎么办:
因为在格式化输出里,%默认为占位符,想要使用% 需要使用 %%(第一个%对第二个%进行转移)即可:
msg = "我是%s, 年龄%d, 目前学习python的进度为%d%%"%('黑色利穆', 25, 10)
print(msg)
# 我是黑色利穆, 年龄25, 目前学习python的进度为10%
2. 流程控制 -- while循环
2.1 基本循环
while 条件:
循环体
如果条件为真,循环体执行
如果条件为假,循环体不执行
2.2 演示生活中的循环
while True:
print("起床")
print("吃早饭")
print("上班")
print("吃午饭")
print("继续上班")
print("下班")
print("吃晚饭")
print("睡觉")
print("扎心了老铁")
这样while循环的执行结构就会一直循环。
2.3 如何终止循环
- 改变条件(只要改变条件,就会终止循环);
- 关键字:break;
- 调用系统命令:quit(), exit() 不建议使用;
- 关键字:continue(终止本次循环);
2.3.1 终止循环方法一:
利用改变条件,终止循环。利用标志位
flag = True
while flag:
print("起床")
print("吃早饭")
print("上班")
print("吃午饭")
print("继续上班")
print("下班")
print("吃晚饭")
print("睡觉")
flag = False
练习:输出1~100所有的数字
flag = True
i = 1
while flag:
print(i)
i += 1
if i == 101:
flag = False
练习:使用while循环求出1-100所有数的和
count = 1
sum = 0
while count < 101:
sum += count
count += 1
print(sum)
2.3.2 终止循环方法二:
break:python提供的关键字。循环中,只要遇到break立刻退出循环。
flag = True
print('begin')
while flag:
print("起床")
print("吃早饭")
print("上班")
print("吃午饭")
print("继续上班")
print("下班")
print("吃晚饭")
break
print("睡觉")
print('end')
练习:打印1-100所有的偶数
i = 0
while i < 101:
if i % 2 == 0:
print(i)
i += 1
2.3.3 continue
continue用于终止本次循环,继续下一次循环;
flag = True
print('begin')
while flag:
print("起床")
print("吃早饭")
print("上班")
print("吃午饭")
print("继续上班")
print("下班")
print("吃晚饭")
continue
print("睡觉")
print('end')
练习:使用while循环打印 1 2 3 4 5 7 8 9 10
i = 0
while i < 10:
i += 1
if i == 6:
continue
print(i)
练习:打印 1 2 3 4 5 95 96 97 98 99 100
i = 0
while i < 100:
i += 1
if i > 5 and i < 95: # 只要i在6-94之间,就不print打印,直接进入下一次loop
continue
print(i)
2.4 while ... else ...
当while循环体正常执行完毕,中间没有被break中止,就会执行else后面的语句:
i = 0
while i <= 5:
i += 1
print("Loop", i)
else:
print("循环体执行完毕")
print("----end----")
# Loop 1
# Loop 2
# Loop 3
# Loop 4
# Loop 5
# Loop 6
# 循环体执行完毕
# ----end----
如果执行过程被break中止,就不会执行else
i = 0
while i <= 5:
i += 1
print("Loop", i)
if i == 4:break
else:
print("循环体执行完毕")
print("----end----")
# Loop 1
# Loop 2
# Loop 3
# Loop 4
# ----end----
3. 基本运算符
运算分类:
- 算术运算;
- 比较运算;
- 逻辑运算;
- 赋值运算;
- 成员运算;
- 身份运算;
- 位运算;
3.1 算数运算
设置变量a = 10, b = 20
运算符 | 描述 | 实例 |
---|---|---|
+ | 加:两个对象相加 | a + b 输出结果 30 |
- | 减:得到负数,或一个数减另一个数 | a - b 输出结果 -10 |
* | 乘:连个数相乘,或返回一个重复若干次的字符串 | a * b 输出结果 200 |
/ | 除:x 除以 y | b/a 输出结果 2 |
% | 取模:返回除法的余数 | b%a 输出结果 0 |
** | 幂:返回x的y次幂 | a**b 为10的20次方 |
// | 取整除:返回商的整数部分 | 9//2 输出结果4,9.0//2.0 输出结果 4.0 |
3.2 比较运算
设置变量a = 10, b = 20
运算符 | 描述 | 实例 |
---|---|---|
== | 等于:比较对象是否相等 | (a == b) 返回 False |
!= | 不等于:比较两个对象是否不相等 | (a != b) 返回 True |
> | 大于:返回x是否大于y | (a > b) 返回 False |
< | 小于:返回x是否小于y | (a < b)返回 True |
>= | 大于等于:返回x是否大于等于y | (a >= b) 返回 False |
<= | 小于等于:返回x是否小于等于y | (a <= b)返回 True |
<> | 不等于:比较两个对象是否不相等 | (a <> b) 返回 True,类似!= |
3.3 赋值运算
设置变量a = 10, b = 20
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将a + b 的结果赋值给c |
+= | 加法赋值运算符 | 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 |
3.4 逻辑运算
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔“与”,如果x为False,x and y返回False,否则返回y的计算值 | (a and b) 返回 true |
or | 布尔“或”,如果x为True,返回True,否则返回y的计算值 | (a or b)返回 true |
not | 布尔“非”, 如果x为True,返回False。如果x为False,返回True | not(a and b) 返回 false |
逻辑运算优先级:
() > not > and > or
- and 都为真的时候取and后边的值
- and 都为假的时候取and前面的值
- and 一真一假的时候取假的
- or 都为真的时候取or前边的值
- or 都为假的时候取or后边的值
- or 一真一假的时候取真的
判断下列多级语句的True,False:
3 > 4 or 4 < 3 and 1 == 1
False or False and True
False or False
False
1 < 2 and 3 < 4 or 1 > 2
True and True or False
True
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
True and Trua or False and False
True
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
False and True or False and True or False
False
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
False and True
False
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
False and True
False
判断下列逻辑语句的值:
8 or 4
8
0 and 3
0
0 or 4 and 3 or 7 or 9 and 6
0 or 3 or 7 or 6
3
3.5 成员运算
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回True,否则返回False | x在y序列中,如果x在y序列中返回True |
not in | 如果在指定的序列中没有找到返回True,否则返回False | x不在y序列中,如果x不在y序列中返回True |
判断元素是否在字符串(字典,列表,集合)中:
print('黑色利穆' in '我叫黑色利穆,今年25岁,我正在学习python') # True
print('a' in 'bcdef') # False
print('b' not in 'acdef') # True
4. 编码初始
类型 | 描述 | 备注 |
---|---|---|
ascii | 美国,不支持中文 | |
gbk | 国标, | 英文:8位1字节,中文:16位2字节 |
unicode | 万国码 | 英文:16位2字节,中文:32位4字节 |
utf-8 | 可变长编译 | 英文:8位1字节,欧文:16位2字节,中文:24位3字节 |
python中一个字符串为:'a黑色利穆',如果使用utf-8编码,这个字符串占几个字节:
一个英文使用一个字节,一个中文使用三个字节,所以'a黑色利穆‘
如果是utf-8编码占13个字节;
如果是unicode编码占18个字节;
如果是gbk编码占9个字节;
8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB