Python学习 - 第2天(运算符)
1、昨日作业讲解
# -*- 相关练习1 -*- # 使用while循环输入1234568910 count = 0 while count < 10: count += 1 if count == 7: pass else: print(count)
# -*- 相关练习6 -*- # 用户登陆(三次机会重试) i = 0 while i < 3 : usename = input("请输入您的账号:") password = int(input("请输入您的密码:")) if usename == "上帝" and password == 110 : print("登陆成功!") else : print("登录失败!请重新登陆") i += 1
2、格式化输出
1)、案例
name = input("请输入您的姓名:") age = input("请输入您的年龄:") height = input("请输入您的身高:") msg = "我叫%s 今年%s岁 我的身高是%s" %(name,age,height) print(msg)
name = input("请输入您的姓名:") age = input("请输入您的年龄:") job = input("请输入您的工作:") hobble = input("请输入您的爱好:") msg = '''---------- info of %s ---------- Name : %s Age : %d Job : %s Hobble : %s ---------- end ----------''' %(name,name,int(age),job,hobble) print(msg)
2)、转义字符 — %
3)、%,占位符;%s,字符串;%d,数字
%% 只是单纯的显示%
3、while...else...
当while循环被break打断,就不会执行else的结果
count = 0 while count <= 5 : count += 1 if count == 3: break print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------")
count = 0 while count <= 5 : count += 1 if count == 3: pass print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------")
4、初始编码
1)、电报、电脑的传输,存储都是01010101
2)、ASCII码,涵盖了英文字母大小写,特殊字符,数字。只能表示256种可能。
3)、unicode,万国码,32位表示一个字符
4)、utf-8 一个字符最少用8位去表示,英文用8位 一个字节
欧洲文字用16位去表示 两个字节
中文用24位去表示 三个字节
utf-16 一个字符最少用16位去表示
5)、gbk,中国人自己发明的,一个中文用两个字节16位去表示
5、运算符
1)、算术运算符
+ 加法运算,将运算符两边的操作数相加
- 减法运算,将运算符左边的操作数减去右边的操作数
* 乘法运算,将运算符两边的操作数相乘
/ 除法运算,用右操作数除左操作数
% 模运算,用右操作数除左操作数并返回余数
** 幂运算,对运算符进行指数(幂)计算
// 整除运算,其结果是删除小数点后的商数。
2)、比较(关系)运算符
== 如果两个操作数的值相等,则条件为真。
!= 如果两个操作数的值不相等,则条件为真。
> 如果左操作数的值大于右操作数的值,则条件为真。
< 如果左操作数的值小于右操作数的值,则条件为真。
>= 如果左操作数的值大于或等于右操作数的值,则条件为真。
<= 如果左操作数的值小于或等于右操作数的值,则条件为真。
3)、赋值运算符
= 将右侧操作数的值分配给左侧操作数
+= 将右操作数相加到左操作数,并将结果分配给左操作数
-= 从左操作数中减去右操作数,并将结果分配给左操作数
*= 将右操作数与左操作数相乘,并将结果分配给左操作数
/= 将左操作数除以右操作数,并将结果分配给左操作数
%= 将左操作数除以右操作数的模数,并将结果分配给左操作数
**= 执行指数(幂)计算,并将值分配给左操作数
//= 运算符执行整除运算,并将值分配给左操作数
4)、逻辑运算符
and 如果两个操作数都为真,则条件成立
or 如果两个操作数中的任何一个非零,则条件成立
not 用于反转操作数的逻辑状态
5)、按位运算符
& 按位与,如果它存在于两个操作数中,则操作符复制位到结果中
| 按位或,如果它存在于任一操作数,则复制位
^ 按位异或,如果它是一个操作数集合,但不是同时是两个操作数则将复制位
~ 按位取反,二进制补码,它是一元的,具有“翻转”的效果
<< 按位左移,左操作数的值由右操作数指定的位数左移
>> 按位右移,左操作数的值由右操作数指定的位数右移
6)、成员运算符
in 如果在指定的序列中找到一个变量的值,则返回true,否则返回false
not in 如果在指定序列中找不到变量的值,则返回true,否则返回false
7)、身份运算符
is 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False
is not 如果运算符任一侧的变量指向不同的对象,则返回True,否则返回False
8)、运算符优先级
N1、** 幂运算
N2、~ + - 取反,一元加减
N3、* / % // 乘运算、除运算、取模、整除
N4、+ - 加运算,减运算
N5、>> << 按位左移,按位右移
N6、& 按位与
N7、^ | 按位异或,按位或
N8、<= >= > < 比较运算
N9、== !=(<>) 等于运算符
N10、= %= /= //= -= += *= **= 赋值运算符
N11、is is not 身份运算符
N12、in not in 成员运算符
N13、not and or 逻辑运算符
'''x or y x True,则返回x''' print(0 or 4 and 3 or 2) #3 '''x and y x True,则返回y''' print(3 > 1 or 2 and 2) #True
6、类型转换
#int ----> bool 非零转换成bool True 0 转换成bool 是False print(bool(2)) #True print(bool(-2)) #True print(bool(0)) #False #bool --->int print(int(True)) # 1 print(int(False)) # 0
7、相关练习
# -*- 相关练习1 -*- # 计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和 i = 1 sum = 1 while i < 99: i += 1 if i % 2 == 0: if i != 88: sum -= i else: continue else: sum += i print(sum)
# -*- 相关练习2 -*- #⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化) i = 3 userName = "SharkJiao" userPassword = "110110" while i > 0: i -= 1 name = input("请输入您的用户名:") if name == userName: password = input("请输入您的密码:") if password == userPassword: print("正在登陆,请耐心等待...") print('''恭喜您,登陆成功! 欢迎用户回来! 用户名:%s 密码:%s '''%(name,password)) break else: if i == 0: print("您的账号已锁定,请联系管理员登陆!") answer = input("再试试?Y or N") if answer == 'Y': i =3 else: print("您还剩"+str(i)+"次机会,请谨慎使用!") else: if i == 0: print("您的账号已被锁定,请联系管理员登陆!") answer = input("再试试?Y or N") if answer == "Y": i = 3 else: print("您还剩" + str(i) + "次机会,请谨慎使用!") else: print("你TM还要不要脸...")