1.while 循环是可变循环  for循环是不可变循环

 

2.不同的数据类型使用场景:

int:1,2,3 一般用于计算

bool: True False 做判断

str: 存少量数据 'aa' 'bb' '中二'  “123,13,33,使命”

list:存大量数据[1,2,3,''aa,'bb',[22,33,'aa'],(1m,2m,3m)]

tuple元祖:只读 (1,2,3,)  只存一个需要加,

dict:{key:value} 关系

集合:一般不使用

 

3.format三种玩法 格式化输出

s1 = "我是{} 今年{} 爱好{} 再说次我叫{}".format("波波", 30, "广", "波波")
print(s1)
name = "黑sir"
s2 = "我是{} 今年{} 爱好{} 再说次我叫{}".format(name, 30, "广", name)
print(s2)
s3 = "我是{0} 今年{1} 爱好{2} 再说次我叫{0}".format(name, 30, "广")
print(s3)

 

4.相关练习

 

# 1. 使用while循环 输出 123456 8910
count = 0
while count<10:
    count += 1
    if count == 7:
        pass
    else:
        print(count)
# 2. 求 1-100 所有数的和
print(sum(range(1,100)))
# 3.输出1-100内所有奇数
list1 = [i for i in range(1, 100) if i%2==1 ]
print(list1)
# 4. 输出1-100内所有偶数
list2 = [ i for i in range(1, 100) if i%2==0]
print(list2)
# 5. 求 1+2+...+99的所有数的和
n = 1
sum = 0
while n<100:
    sum+=n
    n+=1
print(sum)
# 6.用户登录(三次机会重试)
count = 0
while count<3:
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'admin' and password == '123':
print("输入正确")
break
else:
print("请重试,用户名或者密码错误, 还有%d次机会" % (2-count))
if (2-count) == 0:
result = input("还想再试试?Yes")
if result == 'Yes':
count = 0
continue
count+=1
else:
print("没机会了")

 

5.# 列表增删改查 、嵌套

#
li = ['b', 'aa']
while 1:
    name = input(">>>")
    if name.strip().upper() == "Q":
        break
    else:
        # 追加到最后
        li.append(name)
# 索引位置 插入
li.insert(2, 'qiqii')
# 迭代插入
li.extend("678")
li.extend([3,4,5])
print(li)
#
value = li.pop(-1) # pop返回删除的值,默认删最后一个
print(value, li)
li.remove('5')
del li[4]
# 清空所有列表
li.clear()
li = []
del li
# 切片删除
del li[1:3]
#
li[0] = 'erge'
li[0] = [1,2,3]
li[0:2] = 'i'
li[0:2] = 'isanme'
# 查 切片 for循环  省略
# list公共方法
len(li)
sum(li)
li.count('4')
li.index('4', 0, 3)
li.sort() # 升序
li.sort(reverse=True) # 降序
reversed(li) # 翻转
# 算法排序 面试常考

# 循环打印列表
li2 = [1,2,3,['alex', 1, 4, 'sam'],77,8]
for i in li2:
    if type(i) == type(list):
        for j in list:
            print(j)
    else:print(i)
6.# 元祖操作  只读列表 只能查 可循环查询 可切片 儿子不能变 孙子可以变
t = (1,2,'33', [11,22,33,'alex'])
t[3].append('sam')
print(t)

s = 'abc;'
s1 = ' '.join(s)
print(s1)
# 字符串的join 和 split 相反  字符串转列表 用split 列表转字符串用join
list = ['a','b',1,2]
sli = '+++'.join(list)
print(sli)

# range()

7.# dict增删改查 嵌套

数据类型划分:可变数据类型和 不可变数据类型

不可变数据类型:元祖 bool int str 可哈希

可变数据类型: list set dict  不可哈希

dict 字典中:key 必须是不可变数据类型, 可哈希,按照哈希排序, value 可以是任意数据类型,字典的查找速度较快

dict优点:

二分查找去查询 可存储大量的关系型数据

python3.5前的版本都是无序的

d = {'aaa':'111',2:'333',(66,77):55, True:'123', 'name':[1,2,3]}
#
d['age'] = 18 #有存在的替换覆盖 不存在则增加
d.setdefault('sex','female') # 有存在的不替换
print(d)
#
print(d.pop('name'))
d.pop('aaa', None)
d.popitem() # 随机删除 有返回值
d.clear()
del d
#
f2 = {'name':'bb','hobby':'piano'}
# d 更新到 f2 覆盖已存在的 增加不存在的 其他不变
f2.update(d)
#
for k,v in d.items():
    print(k, v)

for k in d.keys():
    print(k)

for v in d.values():
    print(v)

print(d.get('age')) # 用get取 没有Key也不会报错
print(d.get('age', '没有这个值')) # 用get取 没有Key也不会报错,可以指定错误提示语