day02 while循环和格式化
day02 while循环和格式化
今日内容概要
- while循环
- 格式化
- 运算符
- 编码初始
昨日内容回顾
-
变量
变量命名规范:
- 由数字、字母和下划线组成
- 不能以数字开头
- 不能使用Python中的关键字
- Python中的变量名区分大小写
- 变量的命名要具有可描述性
- 变量名不应该有汉字和拼音
- 变量命名推荐写法:
- 驼峰体
- 下划线
-
常量
-
基本数据类型
- 字符串
- 整型
- 布尔值
-
注释
-
用户交互
-
流程控制
今日内容详细
while循环
while循环基本结构
循环就是不断地重复着某件事情。while就是while循环的关键字。
while循环的基本结构:
while 条件:
缩进 循环体
典型while循环示例:
print(1111)
while True: # 死循环
print("坚强")
print("过火")
print("鸡你太美")
print("大碗宽面")
print(333)
上面的例子中,第一步,先打印1111。第二步,进入while语句,判断while后的条件是否为真。while后的语句是True,为真,进入循环体中。第三步,打印坚强。第四五六步分别打印出过火、鸡你太美和大碗宽面。循环体中的内容运行完毕,程序又返回到while语句。第七步,继续判断while后的条件是否为真。然后继续进入循环体,重新打印内容。随后又返回到while语句中。因为while语句后面的条件一直都是True,故而循环往复,永不停息,成为了死循环。最后一条的333永远也打印不出来。

break语句
很显然,这样的死循环并不能满足我们日常编程的需要。如果能有办法限制循环次数,将会十分实用。在这里,我们可以引入break语句。break可以终止当前循环。结合if条件语句,可以把死循环转换成有限的循环。例如:
# 循环5次
count = 0
while True: # 死循环
count = count + 1 # 先执行 = 右边的内容
if count == 5:
print(count)
break # 有限循环
运行的结果为:
5
在这个例子中,我们先定义了一个变量count用来计数,也成为计数器。每一次循环,count就会增加1。当count等于5时,if语句的条件成立,打印出当前count的数值,运行break,退出循环。我们就成功把死循环转换成了有限循环。

continue语句
除了break,while循环中还有一个很重要的语句continue。continue语句的意思是跳出本次循环,继续下次循环。用通俗的话来讲,continue就是伪装成循环体中最后一行代码。例如:
count = 0
while True: # 死循环
count = count + 1 # 先执行 = 右边的内容
if count == 5:
print(111)
continue # continue 就是伪装成循环体中最后一行代码
print(count)
很显然,这还是一个死循环。只不过当计数器count等于5的时候,会打印一次111,并且这次的count,也就是5,不会被打印出来。

条件控制循环
除了通过使用break关键字来终止循环,我们还可以通过while后面的条件来控制循环次数:
count = 0
while count < 2:
print(count)
count = count + 1
打印出的结果为:
0
1
在上面的例子中,最开始计数器count的值为0。然后运行到while条件,count < 2是成立的,于是进入循环体。首先把count的内容0打印出来,然后count增加1,进入下一次循环。第二次循环也一样,打印1之后,count变成了2,再回到while判断语句。此时,count < 2不成立,循环终止。

while else语句
while语句也有判断的行为,所以也可以配合else语句使用。while else结构和if else结构很相似。只有当while后判断的条件不成立时,才会执行else中的语句。如果循环中没有break,else语句中的内容将在循环结束后执行;如果循环中有break,else语句中的内容有可能不被执行。观察下面两个例子:
print(222)
count = 0
while count < 3:
print(count)
count = count + 1
else:
print(111)
# 运行结果: 222 0 1 2 111
print(222)
count = 0
while count < 3:
print(count)
count = count + 1
break
else:
print(111)
# 运行结果: 222 0
在第一个例子中,经过三次循环后,计数器count的值将增加到3。此时,条件count < 3不再满足,跳出循环,执行else语句,打印出111来。而第二个例子中,在第一次循环中就遇到了break,循环被强行终止,并没有再次判断count < 3,于是就不会进入到else中,111便打印不出来。
while循环小结
break:终止当前循环continue:跳出本次循环,继续下次循环(就是伪装成循环体中最后一行代码)continue和break下方的代码都不会执行while循环可以通过条件控制循环的次数while语句可以和else语句配合使用,当while后的条件不满足时,将会运行else中的语句。
格式化
有这样一个字符串:
msg = """
------info------
name:meet
age:18
sex:男
hobby:女
-------end------
"""
如果我们想让用户输入名字,年龄,性别和爱好,然后程序按照上面的格式给打印出来。从目前我们所学的知识,我们可以用这样的代码来实现:
a = "------info------"
b = "name:"
c = "age:"
d = "sex:"
e = "hobby:"
f = "-------end------"
name = input("name")
age = input("age")
sex = input("sex")
hobby = input("hobby")
print(a)
print(b + name)
print(c + age)
print(d + sex)
print(e + hobby)
print(f)
代码运行后就是这样的:
namealex
age18
sex男
hobby女
------info------
name:alex
age:18
sex:男
hobby:女
-------end------
%格式化
不过虽然我们实现了需求,但是太过繁琐。这里就可以用到格式化的方法。格式化,就是在字符串中需要自定义的位置放入占位符,然后通过给占位符提供数据,从而构建新的字符串。提供的数据需要和占位符一一对应,否则将会报错。
Python中常用的占位符有:
%s字符串 :%s可以填充字符串也可以填充数字%d|%i整型 : 必须填充数字%%转义:变成普通的%
有了格式化的方法,上面的例子我们就可以简化成这个样子:
name = input("name")
age = input("age")
sex = input("sex")
hobby = input("hobby")
a = "哈哈啊"
msg = """
------info------
name:%s
age:%s
sex:%s
hobby:%s
-------end------
"""
print(msg%(name,int(age),sex,hobby))
f-strings格式化
在Python 3.6及以后的版本中引入了一个新的f-strings方法格式字符串,把上面的格式化方法进一步简化,具体做法为:
msg = f"""
------info------
name:{input("name")}
age:{input("age")}
sex:{input("sex")}
hobby:{input("hobby")}
-------end------
"""
print(msg)
用大括号将需要格式化的位置标记出来,在大括号里面填入变量或者数据,构建成新的字符串。
其中,可以通过两个大括号{{}}来转义,表示普通的大括号。
运算符
比较运算符
比较运算符主要有六个:
>:大于<:小于>=:大于等于<=:小于等于==:等于!=:不等于
比较运算返回的值为True或False。
算术运算符
Python中的算术运算符有七个:
+:加和-:相减*:相乘/:相除//:整除|地板除(向下取整)**:幂运算%:取余(模)
算术运算主要用于数字的计算。字符串也可以用+和*进行拼接。
赋值运算符
赋值运算符为=。在Python中,为了输入简便,还从其中算术运算符中衍生出了七种赋值运算符:+=,-=, *=, /=, //=, **=, %=。它们的用法和含义如下:
a = 10
b = 2
b += 1 # b = b + 1
a -= 1 # a = a - 1
a *= 2 # a = a * 2
a /= 2 # a = a / 2
a //= 2 # a = a // 2
a **= 2 # a = a ** 2
a %= 2 # a = a % 2
逻辑运算符
逻辑运算符有三个:与(and,并且)、或(or)、非(not,不是)。
逻辑运算的优先级是() > not > and > or,查找顺序为从左向右。例如:
3>2 and 4>2 or True and not False and True
# 先运算比较
True and True or True and not False and True
# 再运算not
True and True or True and True and True
# 运算and
True or True
# 最后运算or
True
当数字之间进行逻辑运算时,有这样一套规则:
and数字进行逻辑运算时:
两边都不为0和False时,选择and后边的内容
两边都为假时,选择and前的内容
一真一假选择假
or 数字进行逻辑运算时:
两边都不为0和False时,选择or前边的内容
两边都为假时,选择or后边的内容
一真一假选择真
官方给出的运算规则是这个样子的:
| 操作 | 结果 |
|---|---|
| x or y | 如果x为假,选择y,否则选择x |
| x and y | 如果x为假,选择x,否则选择y |
| not x | 如果x为假,返回True,否则返回False |
可以通过下面的示例来找到这些规律:
print(1 and 3)
print(0 and 8)
print(9 and 4)
print(False and 5)
成员运算符
在Python中,成员运算符有两个:
- a in b:用于判断a是否在b中
- a not in b:用于判断a是否不在b中
具体使用示例:
name = "alex"
msg = input(">>>")
if name in msg:
print(111)
else:
print(222)
输出结果为:
>>>alexad
111
>>>alecxaa
222
编码初识
常见编码集:
- ascii:
- 不支持中文
- 一个字符占用8位
- gbk(包含ascii)国标码:
- 一个英文字符占用8位(1字节)
- 一个中文字符占用16位(2字节)
- Unicode:
- 英文:4个字节,32位
- 中文:4个字节,32位
- utf-8(最流行的编码集):
- 英文:1个字节,8位
- 欧洲:2个字节,16位
- 亚洲:3个字节,24位
单位转换:
- 1字节 = 8位
- 1Byte = 8 bits
- 1024bytes = 1KB
- 1024KB = 1MB
- 1024MB = 1GB
- 1024GB= 1TB #够用了
- 1024TB = 1PB

浙公网安备 33010602011771号