00 上节课回顾
"""
1、基本数据类型
数字类型
int
float
str
list:索引对应值
dict:key对应值
bool:
1、显式的布尔值
True
False
10 > 3
'aaa' == 'aaa'
2、隐式的布尔值
所有数据类型的值都可以作为布尔值用
0、空、None三类的隐式布尔值为False,其余均为True
2、基本运算符
10 / 3
10 // 3
10 % 3
10 ** 3
x = 1
x += 1
x = y = z = 10
x, y = y,x
x, y, *_ = [1,2,3,4,5]
> >=
< <=
== !=
not
and
or
3、输入输出
x = input() # x = "xxx"
print("%s %s\n" % (11,"aaa"),end="\n")
4、if判断
if 条件1:
...
elif 条件2:
...
...
else:
...
5、while循环
while 条件:
...
结束while循环的两种方式:
1、将条件改为False
2、break终止本层循环
while+else:
else的子代码块会在循环正常结束后运行
while+continue:
结束本次循环,后续都不运行,直接进入下一次
"""
# 今日内容
# 1、循环嵌套练习题
# 2、for循环
# 3、基本数据类型及内置方法
# 数字类型
# 字符串
01 流程判断之for循环
# names = ['egon', 'lxx', 'xc', 'zjl']
# for i in names:
# print(i)
#
# d = {"k1": 111, "k2": 222, "k3": 333}
# for x in d:
# print(x, d[x])
# for:迭代循环
# 1、遍历值
# info = [["name", "egon"], ["age", 18], ["gender", "male"]]
# for x, y in info:
# print(x, y)
# 2、range()
# l = [111, 222, 333]
# for i in l:
# print('步骤1')
# print('步骤2')
# print('步骤3')
# for i in range(3):
# print('步骤1')
# print('步骤2')
# print('步骤3')
# range(起始位,结束位,步长)
# range(10) # 默认起始位为0,步长1
# range(10, 1, -1) # 从大到小必须指定步长
# print(range(5)) # python3得到range(0,5) python2得到[0, 1, 2, 3, 4] 本质一样,但是更省内存空间
# l = [111, 222, 333, 444, 555]
# print(l[4])
# print(l[3])
# print(l[1])
# print(l[0])
# i = len(l) - 1
# while i > -1:
# print(l[i])
# i -= 1
# for i in range(len(l) - 1, -1, -1):
# print(l[i])
# 3、for+enumerate
# l = [111, 222, 333, 444, 555]
# for i in enumerate(l):
# print(i)
# 4、for+break
# for i in range(5):
# if i == 3:
# break
# print(i)
# 5、for+continue
# for i in range(5):
# if i == 3:
# continue
# print(i)
# 6、for+else # 循环正常结束才会执行,否则不执行
# for i in range(5):
# if i == 3:
# break
# print(i)
# else:
# print("---------")
#
# for i in range(5):
# if i == 3:
# continue
# print(i)
# else:
# print("---------")
# 7、嵌套多层的for循环
# for i in range(3):
# print("--------loop1------> %s" % i)
# for j in range(5):
# print("loop2--------> %s" % j)
02 可变与不可变类型
"""
1、可变类型(不可hsah类型)
值改变的情况下,内存地址/id不变
证明改变的就是原值,即可变类型
2、不可变类型(可hash类型)
值改变的情况下,内存地址也变
证明产生了新的值,即原值不可变
"""
# 1、可变类型的情况
x = 10
print(id(x))
x = 12
print(id(x))
# 2、不可变类型的情况
l = [111, 222]
print(id(l))
l[0] = 3333
print(id(l))
03 基本数据类型及内置方法之数字类型
# 1、整型int的基本使用
# 1.1 用途:年龄、等级、号码
# 1.2 定义方式
# age = 18 # age = int(18)
# 数据类型转换
# x = int(" 103 ") # 把纯数字组成的字符串转换成int类型(前后的空格无所谓,中间不能有空格)
# print(x, type(x))
# 1.3 常用操作及内置方法
# + - * / % > <=
# 2、总结
# 2.1 只能存一个值
# 2.2 是不可变类型
# 3、浮点型float基本使用
# 3.1 用途:身高、体重、薪资等
# 3.2 定义方式
# salary = 3.3 # salary = float(3.3)
# 数据类型转换
# x = float(" 3.3 ")
# print(x, type(x))
# 3.3 常用操作及内置方法
# + - * / % > <=
# 4、总结
# 4.1 只能存一个值
# 4.2 是不可变类型
# x = 3.1
# print(id(x))
# x = 3.3
# print(id(x))
# 复数(了解)
# x = 2 + 3j
# print(x, type(x))
# print(x.real)
# print(x.imag)
# 进制
# 十进制:0~9
# 二进制:0~1
# 八进制:0~7
# 十六进制:0~9 a b c d e f
# 十进制<---二进制
# 1011
# 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
# 8 + 0 + 2 + 1 = 11
# 十进制<---八进制
# 1011
# 1*8^3 + 0*8^2 + 1*8^1 + 1*8^0
# 512 + 0 + 8 + 1 = 521
# 十进制<---十六进制
# 1011
# 1*16^3 + 0*16^2 + 1*16^1 + 1*16^0
# 4096 + 0 + 16 + 1 = 4113
# 十进制--->二进制(除二取余)
# 11
# 11/2=5-1
# 5/2=2-1
# 2/2=1-0
# 最终得到1011
# 十进制--->八进制(除八取余)
# 十进制--->十六进制(除十六取余)
print(bin(11)) # 十进制转二进制
print(oct(11)) # 十进制转八进制
print(hex(11)) # 十进制转十六进制
print(int("11", 2)) # 二进制转十进制
print(int("11", 8)) # 八进制转十进制
print(int("11", 16)) # 十六进制转十进制
04 基本数据类型及内置方法之字符串类型
# 1、字符串str的基本使用
# 1.1 用途:记录一些描述性质的内容,如国籍、名字、一段话等
# 1.2 定义方式
# msg = "abc" # msg = str("abc")
# 数据类型转换
# res = str(111) # 可以把所有类型转换成字符串类型
# print(res, type(res))
# 1.3 常用操作及内置方法
# 按索引取值(正向取+反向取):只能取
# msg = "hello world"
# print(msg[0])
# msg[0] = "H" # 不能改
# 切片(顾头不顾尾,步长)
# msg = "hello world"
# print(msg[3:5])
# print(msg[3:8:2])
# print(msg[-1:2:-2])
# print(msg[::2])
# print(msg[-1::-1])
# 长度len:统计的是字符个数
# msg = "h e你"
# print(len(msg)) # 4(一个空格、一格中文字符都是一个字符)
# 成员运算in和not in
# msg = "hello world"
# print("he" in msg) # True
# print("d" in msg) # True
# print("hd" in msg) # False
# print("hd" not in msg) # True
# 移除空白strip(只会移除两边,不会移除内部)
# name = " cc c "
# print(name.strip()) # cc c
# print(name) # cc c
# name = "**********ccc***********"
# print(name.strip("*")) # ccc
# x = "*-/+()=abc*(-)/*"
# print(x.strip("-+*/(=)")) # abc
#
# name = input("username>>>:").strip()
# pwd = input("password>>>:").strip()
# if name == "ccc" and pwd == "123":
# print("ok")
# else:
# print("error")
# 切分split
# info = "root: 123: 2: 0"
# res = info.split(":", 1)
# print(res[0])
# print(res)
# 循环
# msg = "hello"
# for i in msg:
# print(i)
# 2、总结
# 2.1 只存一个值
# 2.2 是有序的
# 2.3 不可变
05 test
# 打印九九乘法表
# for i in range(1, 10):
# for j in range(1, i + 1):
# print("%s*%s=%s" % (i, j, i * j), end=' ')
# print()
# 打印金字塔
# 最高层 = 5
# 空格数 = max_level - current_level
# *号数 = 2 * current_level - 1
# max_level = 5
# for current_level in range(max_level):
# for i in range(max_level - current_level):
# print(' ', end='')
# for j in range(2 * current_level - 1):
# print('*', end='')
# print()