python—day2笔记
课堂上老师讲的一些基础知识点
电脑的传输,存储都是01010101
最早的 ascii 涵盖了英文字母大小写,特殊字符,数字。
ascii 只能表示256种可能,太少。
创办了万国码 unicode
16表示一个字符不行,32位表示一个字符。由于32位浪费太多。
Unicode 升级 utf-8 utf-16 utf-32
8位 = 1字节(bytes)
utf-8 一个字符最少用8位去表示,英文用8位 一个字节
欧洲文字用16位去表示两个字节
中文用24 位去表示三个字节
utf-16 一个字符最少用16位去表示
gbk 中国人自己发明的,一个中文用两个字节 16位去表示。
1bit 8bit = 1bytes
1byte 1024byte = 1KB
1KB 1024kb = 1MB
1MB 1024MB = 1GB
1GB 1024GB = 1TB
格式化输出
%:占位符 s:字符串类型 d:数字型
name=input('请输入姓名:') age=int(input('请输入年龄:')) hobbie=input('您的爱好:') msg='我叫%s,年龄是%d,我的爱好是%s' %(name,age,hobbie)#%s表示字符串格式输出,%d表示数字型格式输出,后面%(x,y,z)要按顺序填写 print(msg)
name = input('请输入姓名:') age = input('请输入年龄:') job = input('请输入工作:') hobbie = input('你的爱好:') msg = '''------------ info of %s ----------- Name : %s Age : %d job : %s Hobbie: %s ------------- end -----------------''' %(name,name,int(age),job,hobbie) print(msg)
如果要输出%这个符号需要在前面加%
name=input('请输入姓名:') age=int(input('请输入年龄:')) hobbie=input('您的爱好:') msg='我叫%s,年龄是%d,我的爱好是%s,学习进度3%%' %(name,age,hobbie)#想要在转义的语句输出%,需要在加%前面再加个% print(msg)
while循环补充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 ------")
结果:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190814192115108-1575893834.png)
count = 0 while count <= 5 : count += 1 if count == 3: pass print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------")
结果:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190814192224231-1873881129.png)
逻辑运算
1、and、or、not运算符运算
not:not false==trun
and:一真一假为假,两个真为真;两个假为假
or:一真一假为真;两个真为真;两个假为假
优先级关系:() > not > and > or
print(3>4 or 4<3 and 1==1) #结果是false #3>4 or F print(1<2 and 3<4 or 1>2) #结果是true #T or 1>2 print(2>1 and 3<4 or 4>5 and 2>1 or 9<8) #结果是true #T or F or 9<8 #T or 9<8 print(1>2 and 3<4 or 4>5 and 2>1 or 9<8) #结果是false #F or F or 9<8 #F or 9<8 print(1>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6) #结果是fasle #F or F and 9>8 or 7<6 #F or F or 7<6 print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6) #结果是faslse #F and 3<4 or F and 9>8 or 7<6 #F or F or 7<6 #F or 7<6
2、x or y 如果x为True,则返回x;否则返回y
print(1 or 2) #结果为1 print(0 or 3) #结果为3 print(0 or 2 or 3) #结果为2 #2 or 3 #2 print(1 or 2 or 1) #结果为1 #1 or 1 #1
3、x and y 如果x为True,则返回y;否则返回x
print(1 and 2) #结果为2 print(0 and 2) #结果为0 print(3 and 2 and 0) #结果为0 #2 and 0 #0 print(3 and 2 and 2) #结果为2 #2 and 2 #2
把2和3的类型混合在一起运算
print(0 or 1 and 3 or 4 and 5) #结果为3 #0 or 3 or 5 #3 or 5
把1、2和3的类型混合在一起运算
print(1>2 and 3 or 4 and 3<2) #结果为False #F and 3 or 4 and F (F表示False,T表示True) #F or F #F print(2<3 and 3>4 or 4 and 1<5 or 4) #结果为T #F or T or 4 #T or 4 #T
int 转换成 bool和bool转换成int
int 转换成 bool:非零数转换成bool值为True;0转换成bool值为False
print(bool(1)) print(bool(-1)) print(bool(0))
结果:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190814193846692-1451545262.png)
bool 转换成 int;注意:书写True和False开头要大写
print(int(True)) print(int(False))
结果:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190814194042111-807394991.png)
课后习题
判断下列逻辑语句的Ture,False。
print(1>1 or 3<4 or 4>5 and 2>1 and 9>8 or 7<6)#结果为T print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)#结果为F print(1>2 and 3<4 or 4>5 and 2>1 or 9<8 and 4>6 or 3<2)#结果为F
求出下列逻辑语句的值。
print(8 or 3 and 4 or 2 and 0 or 9 and 7)#结果为8 print(0 or 2 and 3 or 4 or 6 and 0 or 3)#结果为3 print(5 and 9 or 10 and 2 or 3 and 5 or 4 or 5)#结果为9
下列结果是什么。
print(6 or 2>1)#结果为6 print(3 or 2>1)#结果为3 print(0 or 5<4)#结果为F print(5<4 or 3)#结果为3 print(2>1 or 6)#结果为T print(3 and 2>1)#结果为T print(0 and 3>1)#结果为0 print(2>1 and 3)#结果为3 print(3>1 and 0)#结果为0 print(3>1 and 2 or 2<3 and 3 and 4 or 3>2)#结果为2
计算1-2+3-4+5-...+99中除了88以外的数总和。(这是除去88,即:1-2+3...+87+89-90...)
#方法一 number=1 sum=0 while number<=99: if number%2==0: if number==88: number+=1#这里必须加上‘number+=1’,因为执行continue之后不会执行下面的循环语句 continue else: sum-=number else: sum+=number number+=1 print(sum) #方法二 i=1 sum=0 while i <100: if i==88:#这个if必须i等于88才会执行,不等于88直接跳过这个if语句 i += 1 continue if i%2!=0:#(!=:表示不等于) sum=sum+i else: sum=sum-i i += 1 print(sum)
结果:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190815121735725-2095009379.png)
计算1-2+3-4+5-...+99中除了88以外的数总和。(这是除去88,即:1-2+3...+87-89+90...;87后面的符号改变的代码)
i=0 j=-1 sum=0 while i<99: i=i+1 if i==88: continue else: j = -j sum=sum+i*j print(sum)
解析:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190815124201644-1021081165.png)
结果:
![](https://img2018.cnblogs.com/blog/1768461/201908/1768461-20190815124235796-191071207.png)
制做趣味模板程序需求:等待用户输入名字,地点,爱好,根据用户所输入的内容,输出:敬爱可亲的xxx,最喜欢在xxx地方干xxx
name=input('请输入名字:') place=input('请输入地点:') hobby=input('请输入您的爱好:') msg='敬爱可亲的%s,最喜欢在%s地方干%s' %(name,place,hobby) print(msg)
用户登陆(三次输错机会)且每次输错误时显示剩余错误次数。
i=0 j=3 name='liule' passwd='123,q' while i<3: username=input('请输入账号:') password=input('请输入密码:') if username==name: if password==passwd: if username==name and password==passwd: print('登录成功!请稍后') break else: if j == 1: i += 1 continue else: print('您输入的密码错误,您还有%s次重新登陆的机会!'%(j-1)) j-=1 else: if j==1: i+=1 continue else: print('您输入的账号错误,您还有%s次重新登陆的机会!'%(j-1)) j-=1 i+=1 while 1: if i==3: answer=input('您是否想再试试登陆?Y或N:') if answer=='Y': print('对不起您今天三次输入账号或密码错误,今天之内无法在登陆!') break else: print('感谢您尝试登陆本网站!') break