02格式化输出与while循环、运算符、编码
一、while循环
-
基本结构
while 循环条件: 循环体 -
执行顺序:
- 遇到while时候,先判断循环条件是否为True
- 如果为True,执行循环体
- 当循环体执行结束之后,再次判断while的条件是否为True
- 如果为True,执行循环体,如果为False,结束循环
-
循环控制关键字
-
break:直接终止循环,退出整个循环
# 打印1-10 count = 1 while True: print (count) if count == 10: break -
continue:退出本次循环,直接开始下一次循环
# 打印1-10中的偶数 count = 1 while count < 11: if count %2 == 0: print (count) count += 1 else: count += 1 continue print('这是奇数') # 这是奇数 这句话不可能打印出来
-
-
终止循环的方式:
-
让条件不成立
flag = True while flag: print("1") print("2") print("3") flag = False因为flag的值在循环体中被改变了,循环条件不成立,所以循环结束。
-
达到预期效果,手动终止循环。
# 用while打印1-10,使用break终止循环 i = 1 while True: print(i) if i == 10: break else: i += 1 -
不能让程序进入死循环。
-
-
练习1
-
使用while循环求1-100所有数字的和
sum1_100=0 num = 1 while True: sum1_100 += num if num == 100: break else: num += 1 print("1-100所有数字的和为:",sum1_100)count = 1 sumall = 0 while count < 101: sumall += count count += 1 print("1-100所有数字的和为:",sumall)
-
-
练习2
- 使用while循环求1-100所有偶素的和:用%运算符
# 方法一 sumall = 0 count = 1 while count < 101: if count %2 == 0: sumall += count count += 1 print("1-100所有偶数和为:",sumall) # 方法二 sumall = 0 count = 2 while count < 102: sumall += count count += 2 print("和为:",sumall) -
while.....else...固定搭配用法
-
只有当while中的条件正常结束的时候才会执行else中的语句。
count = 0 while count < 5: print (count) count += 1 else: print("正常结束") # "正常结束"会正常打印。 # 因为while是因为循环条件不成立而成功结束循环的。 count = 0 while count < 5: print (count) count += 1 if count == 2: break else: print("正常结束") # 此时只会打印0和1,当count=2时候,被break终止了循环,所以else中的语句不会执行二、格式化输出
-
二、格式化输出
-
使用%占位符
name = input("name:") age = input("age:") sex = input("sex:") job = input("job:") hobby = input("hobby:") msg = ''' ---------- info of %s ---------- name : %s age : %s sex : %s job : %s hobby : %s ---------- end -----------------'''%(name,name,age,sex,job,hobby) # 后面%括号中的值,一一对应替换前面占位符中的值。 print(msg) -
使用{}.format()
name = input("name:") age = input("age:") sex = input("sex:") job = input("job:") hobby = input("hobby:") msg = ''' ---------- info ---------- name: {} age: {} sex: {} job: {} hoby: {} ---------- end ----------''' print(msg.format(name,age,sex,job,hobby)) #或者 name = input("name:") age = input("age:") sex = input("sex:") job = input("job:") hobby = input("hobby:") msg = ''' ---------- info of {} ---------- name : {} age : {} sex : {} job : {} hobby : {} ---------- end -----------------'''.format(name,name,age,sex,job,hobby) print(msg) -
如果想输出50%,使用%%来转义
msg = "我叫%s,学习进度为1%"%('jack') print(msg) # 如果这样,程序会报错,把1%也当做了一个占位符了 msg = "我叫%s,学习进度为1%%"%('jack') print(msg) # 这样就不会报错了 # 或者用format输出 msg = "我叫{},学习进度为1%".format('jack') print(msg) -
使用场景
- 字符串中想让某些位置变成动态可传入的,这时候就要考虑到使用格式化输出了。
三、运算符
-
算术运算符
- +:
- -:
- *:
- /:
- % :取余
- **:求幂例如2**3表示2的3次方
- //:取整5//2,结果为2
-
比较运算符
- ==:等于,比较符号两边的值是否相等
- !=:不等于
- >:大于
- <:小于
-
复制运算
- =:赋值
- +=:加完再赋值
- -=:
- *=:
- /=:
- %=:
- **=:
- //=:
-
逻辑运算
-
in:是否在,例如:“5” in “12345” 结果为True
-
and:与
-
or:或
-
not:非
-
优先级:
-
在没有()的情况下,not > and > or
-
情况一
print(2>1 and 3<4 or 4>5 and 6<7) #因为and优先级高于or,所以先把所有的and算一下 #print(True or False) # 结果为 -
情况二
print(0 or 2) print(2 or 0) print(3 or 4) print(4 and 5) print(6 and 0) # 结果 2 3 5 0 # 运算规则- 比较规则
- 数字中只有0是假,别的全是真
- or:
- 如果两边都不为0,结果为or左边的值
- 如果有一边为0,结果为非0的那个值
- and:
- 两边只要有一边为0,结果就为0
- 两边都不为0,结果为and右边的值
- 比较规则
-
练习
#求下列值 8 or 4 0 and 3 0 or 4 and 3 or 7 or 9 and 6 1<2 and 3 or 6 1>2 and 3 or 6 #结果 8 0 3 3 6
-
-
-
四、编码
-
ASCII码
- 只支持英文,数字和特殊字符,不支持中文
- 8位(一个字节)表示一个字符
-
gbk国标码
- 在ASCII基础上,添加了支持中文
- 英文字符占1个字节,中文占2个字符
-
Unicode 国际码
- 国际上通用的编码
- 英文占2个字节,中文占4个字节
- 体积大
- 兼容性高,与任何编码都有映射
-
utf-8
- 英文占1个字节,中文占3个字节,欧洲占2个字节
-
测试
'中国12he':GBK码,占用8个字节 '中国12he':UTF-8码,占用10个字节 -
单位转换
8bit=1B(byte) 1024B=1KB 1024KB=1MB 1024MB=1GB 10024GB=1TB 1024TB=1PB 1024PB=1EB
本文来自博客园,作者:majic_jie,转载请注明原文链接:https://www.cnblogs.com/majic-jie/p/14453185.html

浙公网安备 33010602011771号