今日内容概要
-
基本运算符
-
流程控制
-
字符编码
理论特别多、结论特别少
-
文件处理
今日内容详细
基本运算符
1.算数运算符
x = 1
y = 5
res = x + y #加
res1 = x - y #减
res2 = x * y #乘
res3 = x / y #除
2.比较运算符
a = 1
b = 10
a > b
a < b
a >= b
a <= b
a == b
#一个等号是赋值符号 两个等号才是真正的等号
3.赋值运算符
username = 'jason'
4.增量赋值
x = 10
x = x + 1 # x += 1
x = x - 1 # x -= 1
x = x * 1 # x *= 1
x = x / 1 # x /= 1
5.解压赋值
name_list = [111,222,333,444,555]
a = name_list[0]
b = name_list[1]
c = name_list[2]
d = name_list[3]
e = name_list[4]
# 链式赋值操作
#a,b,c,d,e = name_list
# print(a,b,c,d,e)
# 左右两侧数量要一致(列表有五个元素那么赋值符号的左边就应该有五个变量名)
# res1,res2 = name_list # too many values to unpack (expected 2)
# res1,res2,res3,res4,res5,res6 = name_list # not enough values to unpack (expected 6, got 5)
# ret,*a = name_list # *号可以将多余的元素统一组织成列表赋值给后面的变量名
# print(ret,a) # 111 [222, 333, 444, 555]
6.交叉赋值
m = 666
n = 999
#将m和n的值互换
res = m
m = n
n = res
print(m,n)
# 交叉赋值
m,n = n,m
print(m,n)
7.解压赋值
a = 100
b = a
c = a
d = a
# 简写
a = b = c = d = 100
8.逻辑运算
and 与
or 或
not 非
and链接多个条件必须多个条件都为true结果才为true,只要有一个是false那么结果就是false
or链接多个条件只需要有一个条件为true结果就为true,只要所有的都是false那么结果才是false
# and,or,三者如果混用时,是存在优先级之分的,但在日常开发中我们无需记优先级,应该使用()来区分优先级、提升程序的可读性
9.成员运算
>>>'lili' in ['jack','tom','robin']
false
>>>'lili' not in ['jack','tom','robin']
true
10.身份运算
#1.id相同 内存地址必定相同,意味着type和values必定相同
#2.value相同type肯定相同,但是IP不一定相同,如下
>>> x='Info Tony:18'
>>> y='Info Tony:18'
>>> id(x),id(y) # x与y的id不同,但是二者的值相同
(4327422640, 4327422256)
>>> x == y # 等号比较的是value
True
>>> type(x),type(y) # 值相同type肯定相同
(<class 'str'>, <class 'str'>)
>>> x is y # is比较的是id,x与y的值相等但id可以不同
False
流程控制
"""
**********************************************
python中是通过代码的缩进来表示代码的从属关系
if 条件1:
代码1
代码2
这里的代码1和代码2缩进了,所以它们是属于if的,它们能不能执行完全取决于if
冒号后面才可以有子代码,并且多个子代码必须是相同的缩进量
**********************************************
"""
if 条件1: # 如果条件1的结果为True,就依次执行:代码1、代码2,......
代码1
代码2
......
elif 条件2: # 如果条件2的结果为True,就依次执行:代码3、代码4,......
代码3
代码4
......
elif 条件3: # 如果条件3的结果为True,就依次执行:代码5、代码6,......
代码5
代码6
......
else: # 其它情况,就依次执行:代码7、代码8,......
代码7
代码8
......
# 注意:
# 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
# 2、条件可以是任意表达式,但执行结果必须为布尔类型
# 在if判断中所有的数据类型也都会自动转换成布尔类型
# 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
# 2.2、其余均为True
while循环
while 条件:
代码1
代码2
代码3
……
#while的运行步骤:
# 步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、# 步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止
while True:
# 1 先获取用户的用户名和密码
username = input('请输入您的用户名>>>:')
password = input('请输入您的密码>>>:')
# 2 拿着用户名和密码去数据库里面比对select * from userinfo where username=username and password=password;
if username == 'jason' and password == '123':
print('登录成功')
else:
print('用户名或者密码错误')
# 用户输入了正确的用户名和密码之后 应该结束循环
# while True:
# # 1 先获取用户的用户名和密码
# username = input('请输入您的用户名>>>:')
# password = input('请输入您的密码>>>:')
# # 2 拿着用户名和密码去数据库里面比对select * from userinfo where username=username and password=password;
# if username == 'jason' and password == '123':
# print('登录成功')
# # 应该结束掉while循环
# break # break只能结束掉它所属的那一个while循环
# else:
# print('用户名或者密码错误')
# print('我终于出来啦')
# while True:
# # 1 先获取用户的用户名和密码
# username = input('请输入您的用户名>>>:')
# password = input('请输入您的密码>>>:')
# # 2 拿着用户名和密码去数据库里面比对select * from userinfo where username=username and password=password;
# if username == 'jason' and password == '123':
# print('登录成功')
# while True:
# cmd = input('亲爱的贵宾有什么可以帮助您的>>>:')
# if cmd == 'exit':
# break # break只能结束掉它所属的那一个while循环
# print('真正帮您执行:%s'%cmd)
# break
# else:
# print('用户名或者密码错误')
# print('我终于出来啦')
# 当你想一次性结束多层while嵌套 你可以考虑使用标志位
# flag = True
# while flag:
# # 1 先获取用户的用户名和密码
# username = input('请输入您的用户名>>>:')
# password = input('请输入您的密码>>>:')
# # 2 拿着用户名和密码去数据库里面比对select * from userinfo where username=username and password=password;
# if username == 'jason' and password == '123':
# print('登录成功')
# while flag:
# cmd = input('亲爱的贵宾有什么可以帮助您的>>>:')
# if cmd == 'exit':
# flag = False
# print('真正帮您执行:%s'%cmd)
# else:
# print('用户名或者密码错误')
# print('我终于出来啦')
# 用while循环打印1,2,3,4,5,6,7,9
num = 1
while num < 10:
# 如果num是8就不打印
if num == 8:
num += 1
continue # 结束它所属的那一个while的本次循环直接开始下一次循环
print(num)
num += 1
"""
break不给机会了 直接结束
continue再给一次机会 重新开始
"""
for循环
for 变量名 in 可迭代对象: #此时只需知道可迭代对象可以是字符串列表字典
代码一
代码二
#例一
for item in['a','b','c']:
print(item)
# 运行结果
a
b
c
# 参照例1来介绍for循环的运行步骤
# 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码
# 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码
# 步骤3: 重复以上过程直到列表中的值读尽
数据类型及内置方法
在Python中不同的数据类型之间默认是无法直接做操作的
整型和浮点型本身没有其他多余的内置方法
# ret = '666' + 3
# print(ret) # 在python中不同的数据类型之间默认是无法直接做相互操作的
# res = int('666') + 3 # int('666') = 666
# print(res)
# res = int('666.6') + 3 # 报错
# print(res)
# res = float('666.6') + 3
# print(res)
# res = int('abc') + 3 # 报错
# print(res)
while True:
num = input('>>>:')
# 判断用户输入的字符串是否是纯数字
if num.isdigit():
num = int(num)
res = num + 10
print(res)
else:
print('必须输入纯数字')
# 字符串
# n = 111
# f = 11.11
# l = [1,2,3,4]
# d = {'username':'jason'}
# res1 = str(n)
# res2 = str(f)
# res3 = str(l)
# res4 = str(d)
# print(res1,res2,res3,res4) # 任何数据类型都可以转字符串
s = 'hello jason you are very handsome!!! 666 NB'
# 1 索引取值
# print(s[0])
# print(s[0:8]) # 顾头不顾尾
# print(s[0:8:2]) # 步长
# print(s[-1:-5:-1]) # 了解
# 2 长度
# print(len(s))
# 3 成员运算
# print('666' in s)
# 4 移除首位的空白
# username = input('》》》:').strip()
# if username == 'jason':
# print('老板好')
# res = '$$jas$on$$'
# print(res.strip('$')) # jas$on
# 5 切割
user_info = 'jason|123|NB|study'
# res = user_info.split('|')r
# print(res) # ['jason', '123', 'NB', 'study']
# res = user_info.split('|',maxsplit=1) # 从左往右
# print(res) # ['jason', '123|NB|study']
# res = user_info.rsplit('|',maxsplit=1) # 从右往左
# print(res) # ['jason|123|NB', 'study']
猜年龄题
while x == 0:
if n < 3:
username = input('exit退出
请输入用户名:')
if username == "exit":
break
pwd = input("请输入密码:")
if username == 'x' and password == '900876':
x = 0
y = 0
import random
def game():
w = 1
while w == 1:
n = 1
n2 = 6
age = random.randint(0,10)
while True:
if n < n2:
age = input("第%s猜:"%n).str:
if age.lsdigit() == False:
print(int("你确定吗?")
elif int(age) < age:
print("第%s次猜小了"%n)
n += 1
elif int(age) > age:
print("第%s次猜大了"%n)
n += 1
else:
r = input("第%s次猜对了!!!
按y再玩一次
按n退出游戏
输入exit退出程序"%b).strip()
if r == "n":
break
elif r == "n":
z = 0
break
elif d == "exit":
global x
z = 0
x = 1
break
else:
if n2 == 11:
print("你总算猜对了!")
elif n2 == 16:
print("你是认真的吗!")
elif n2 == 21:
print("不会有人%s次都猜不出吧!
不会吧!
不会吧!!
不会吧!!!"%(b-1))
elif n2 > 21:
print("别玩了!你够了!!")
d = input("你已经猜错%s次了,按y增加五次机会"%(b-1))
if d == "y":
n2 += 5
continue
else:
x = 1
z = 0
break
else:
print("账号密码错误")
n += 1
else:
c = input("你已输错三次,按y在获得三次机会,其他退出。")
if c == "y":
n = 0
else:
break