python day 2
1.格式化输出
%s d
name = input("请输入你的姓名:")
age = int(input("请输入你的年龄:"))
height = int( input("请输入你的身高:"))
study = int(input("请输入你的进度:"))
msg = "我的姓名是%s,我的年龄是%d,我的身高是%d,学习进度:%d%%"%(name,age,height,study)#两个%表示%的意思
print(msg)
现有一练习需求,问用户的姓名、年龄、工作、爱好,然后打印一下格式
------------- info of Wang Sen -------------
Name : Wang Sen
Age : 22
Job : Student
Hobby : Girls
-------------------- end ---------------------
你怎么实现呢?你会发现,用字符串拼接的方式很难实现这种格式的输出,所以只需要把要打印的格式先准备好,由于里面的一些信息是需要用户输入的,你没办法预知,因此可以先放置占位符,再把字符串里的占位符与外部的变量做个映射关系就好了。
name = input("请输入你的姓名:") age = int(input("请输入你的年龄:")) job = input("请输入你的工作:") hobby = input("请输入你的爱好:") msg = '''---------info of %s --------- Name : %s Age : %d Job : %s Hobby :%s ----------------- end ------------------ '''%(name,name,age,job,hobby)
print(msg)
2.while else 循环
while 条件 :
循环体
else :
count = 0
while count <= 5 :
count += 1
if count == 3 :
break #如果执行过程中被break了,就不会执行elsa的语句了
print("loop",count)
else:
print("循环正常执行完了”)
print("------- out of while loop -------")
比较
count = 0
while count <= 5 :
count += 1
if count == 3 :
pass #while循环正常结束后才会走else
print("loop",count)
else:
print("循环正常执行完了")
print("----------- out of while loop -------------")
3.初识编码
电报、电脑的传输,存储都是01010101字母
最早的密码本 ascii 涵盖了英文字母大小写,特殊字符,数字
ascii 只能表示256种可能,太少
创办了万国码 uncode
16位表示一个字符不够(一开始),32位表示一个字符。中文不够32位 4个字节。占用资源多。
unicode 升级 utf-8 utf-16 utf-32
8位 = 1字节bytes
utf-8 一个字符最少用8位表示,英文用8位 一个字节
欧洲文字用16位去表示 两个字节
中文用24位去表示 三个字节
utf-16 一个字符最少用16位去表示
gbk 中国人自己发明的,只能用于中文和ascii码中的文字。一个中文用两个字节 16位去表示。
1bit 8bit = 1bytes
1byte 1024byte = 1KB
1KB 1024kb = 1MB
1MB 1024MB = 1GB
1GB 1024GB = 1TB
4.逻辑运算
针对逻辑运算的进一步研究:
1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。
判断下列逻辑语句的True,False。
1,3>4 or 4<3 and 1==1
2,1 < 2 and 3 < 4 or 1>2
3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
2 , x or y , x为真,值就是x,x为假,值是y;
x and y, x为真,值是y,x为假,值是x。
例题:求出下列逻辑语句的值。
8 or 4
0 and 3
0 or 4 and 3 or 7 or 9 and 6
作业
计算1-2+3...+99中除了88以外的所有数的和?
初始版
count = 0
sum = 0
while count < 99:
count += 1
if count %2 == 0:
if count == 88 :
pass
else:
sum = sum -count
else:
sum = sum + count
print(sum)
优化版
count = 0
num = 1
sum = 0
while count < 99 :
count += 1
num += 1
if count == 88 :
continue
else :
sum = sum + count * (-1)**num
print(sum)
计算1-2+3...-99中除了88以外的所有数的总和
初始版
count = 0
sum = 0
while count < 99 :
count += 1
if count == 88 :
continue
elif count > 0 and count < 88 :
if count %2 == 1 :
sum = sum + count
else :
sum = sum -count
else :
if count %2 == 1:
sum = sum - count
else :
sum = sum + count
print(sum)
优化版
count = 0
num = -1
sum = 0
while count < 99 :
count += 1
if count == 88 :
continue
else :
num = -num
sum = sum + count * num
print(sum)
用户登陆(三次输入错误机会)且每次输错时显示剩余错误次数(提示使用字符串格式化)
初始版
Username = "ws"
Password = "qwe1223456"
count = 0
mgs = 3
while count < 3 :
count += 1
user = input("请输入你的用户名:")
password = input("请输入你的密码:")
if user == Username and password ==Password :
print("welcome")
else :
mgs = mgs - 1
print("you have %s chance"%(mgs))
优化版
Username = "ws" Password = "qwe123456" count = 3 while count > 0 : count -= 1 user = input("请输入你的用户名:") password = input("请输入你的密码:") if user == Username and password == Password : print('''-------welcome %s----------
name: %s
password: %s
--------------- end ------------------
'''%(Username,Username,Password)) else : print("you have %s chance"%(count)) num = input("你还有试吗【y】【n】") if num == y : count += 1 else: print("你还要不要脸")