while循环
- while循环的结构
如果条件为真,循环体执行;如果条件为假,循环不执行。
while 条件:
# 循环体
简单的while循环:
# coding:utf-8
count = 0
while count < 10:
count += 1
print(count)
- while循环练习
1.猜数字,设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确,然后退出循环。
# coding:utf-8
while True:
a = eval(input(\'请输入一个数字:\'))
if a > 66:
print(\'猜测的结果大了!\')
elif a < 66:
print(\'猜测的结果小了!\')
elif a == 66:
print(\'猜测结果正确\')
break
2.在上一题的基础,设置:给用户三次猜测机会,如果三次之内猜测对了,则显示猜测正确,退出循环,如果三次之内没有猜测正确,则自动退出循环,并显示‘大笨蛋’。
# coding:utf-8
count = 0
while True:
if count == 3:
print(\'大笨蛋!\')
break
a = eval(input(\'请输入一个数字:\'))
if a > 66:
print(\'猜测的结果大了!\')
count += 1
elif a < 66:
print(\'猜测的结果小了!\')
count += 1
elif a == 66:
print(\'猜测结果正确\')
break
3.使用循环输入 1 2 3 4 5 6 8 9 10 。
# coding:utf-8
i = 0
while i < 10
i += 1
if i == 7:
continue
print(i)
4.求1-100的所有数的和
# coding:utf-8
i = 0
sum_num = 0
while i < 100:
i += 1
sum_num += i
print(sum_num)
5.输出 1-100 内的所有奇数
# coding:utf-8
i = 1
while i < 100:
print(i)
i += 2
# coding:utf-8
i = 1
while i <= 100:
if i % 2 != 0:
print(i)
i += 1
6.输出 1-100 内的所有偶数
# coding:utf-8
i = 1
while i <= 100:
if i % 2 == 0:
print(i)
i += 1
7.求1-2+3-4+5 ... 99的所有数的和
# coding:utf-8
\'\'\'
求1-2+3-4+5 ... 99的所有数的和
\'\'\'
sum_positive = 0 # 负数之和
sum_negative = 0 # 证数之和
i = 1
while i <= 99:
if i % 2 == 0:
sum_positive += i
else:
sum_negative += i
i += 1
print(sum_negative - sum_positive)
\'\'\'
50
\'\'\'
breake关键字
break关键字可用来终止当前循环。当程序执行到break的时候就结束当前这个while循环,break以下的代码都不执行。
# coding:utf-8
count = 0
while count < 10:
count += 1
if count > 8:
break
print(count) # 当count>8,print函数不会执行
continue关键字
continue关键字用于退出当次循环,继续下一次循环。
# coding:utf-8
count = 0
while count < 10:
count += 1
if count == 9:
continue
print(count) #
while else结构
当满足while条件(或者while结构中的条件部分为False)后,执行else中的语句:
# !/usr/bin/env python
# coding:utf-8
count = 0
while count < 5:
print(count)
count += 1
else:
print(\'stop\')
\'\'\'
0
1
2
3
4
stop
\'\'\'
如果通过其它方式(如:break语句)跳出while循环,则执行else中的语句:
# !/usr/bin/env python
# coding:utf-8
count = 0
while True:
if count > 10:
break
print(count)
count += 1
else:
print(\'stop\')
\'\'\'
0
1
2
3
4
5
\'\'\'
字符串格式化
- 字符串格式化的意义
# coding:utf-8
\'\'\'
字符串格式化的意义:使用比较方便
\'\'\'
# 没有使用字符串格式化
name = \'Thanlon\'
print(name + \' is play basketball……\') # 写起来比较麻烦
# 使用字符串格式化
name = \'Thanlon\'
print(\'%s is play basketball……\' % (name,)) # 写起来计较方便
- %s与%d
%s与%d是占位符,s表示字符串,d表示数字
template = \'我是%s,年龄%d,职业时%s。\' % (\'thanlon\', 22, \'软件开发工程师\',)
print(template)
- %%
# coding:utf-8
name = \'Thanlon\'
# 遇到%就认为是占位符
# template = \'%s手机点电量是100%\' % (name)
\'\'\'
ValueError: incomplete format
\'\'\'
template = \'%s手机电量是100%%\' % (name)
print(template)
\'\'\'
Thanlon手机电量是100%
\'\'\'
运算符
- 算数运算
| 运算符 | 描述 |
|---|---|
| + | 加,两个对象相加 |
| - | 减 |
| * | 乘,两个数相乘或返回一个被重复若干次的字符串 |
| / | 除 |
| % | 取模,除法的余数 |
| ** | 幂 |
| // | 取整数,商的取整部分 |
- 比较运算
| 运算符 | 描述 |
|---|---|
| == | 等于,比较对象是否相等 |
| != | 不等于,比较对象是否不相等 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
- 赋值运算
| 运算符 | 描述 |
|---|---|
| = | 简单的赋值运算符 |
| += | 加法赋值运算符 |
| -= | 减法赋值运算符 |
| *= | 乘法赋值运算符 |
| /= | 除法赋值运算符 |
| %= | 取模赋值运算符 |
| **= | mi赋值运算符 |
| //= | 取整除赋值运算符 |
- 逻辑运算
| 运算符 | 描述 |
|---|---|
| and | 对于x and y,当x和y均为True时,x and y为True;x或y任何一个为False,x and y为False |
| or | 对于x or y,x和y任何一个为True,结果为True;x和y都为False,结果才是False |
| not | 取反,对于not x,x为True,not x为False;x为False,not x为True |
| 在没有括号的情况下,not的优先级高于and,and优先级高于or。同一优先级哪个在前先计算哪个。 | |
| 对于and,第一个值如果转换成布尔值是True,则value = 第二个值;如果第一个值换成布尔值是False,则value = 第一个值。如果有多个and条件,则从左到右依次进行上述流程。 | |
| 对于or,第一个值如果是转换成布尔值是真,则value=第一个值;第一个值转换成布尔值如果是假,则value=第二个值。如果有多个or条件,则从左到右依次进行上述流程。 |
- 成员运算
使用到的运算符:in和not in,用来判断元素是否在原字符串、字典、列表、集合种
# coding:utf-8
print(\'t\' in \'thanlon\')
\'\'\'
True
\'\'\'
# coding:utf-8
print(\'t\' not in \'thanlon\')
\'\'\'
False
\'\'\'
- 运算符优先级
| 运算符 | 描述(表格从上到下优先级依次降低) |
|---|---|
| ** | 指数 |
| ~、+、- | 按位取反,一元加号和减号 |
| *、/、%、// | 乘、除、取模和取整除 |
| +、- | 加法、减法 |
| >>、<< | 右移、左移 |
| <=、>=、>、< | 比较运算符 |
| ==、!= | 等于、不等于 |
| =、%=、/=、//=、-=、+=、*=、**= | 赋值运算符 |
| is、is not | 身份运算符 |
| in、not in | 成员运算符 |
| not and or | 逻辑运算符 |
编码
- ASCII
只表示英文,使用8位表示信息,有2的8次方种表示结果 - Unicode
使用32位表示信息,有2的32次方种表示结果。目前只使用了21位,Unicode一般用于计算机内存中做计算。 - UTF-8
压缩Unicode,使用8位,用尽量少的位数来表示信息,节省存储空间。UTF-8中一个中文占3个字节,UTF-8一般可用于网络传输和数据存储。 - UTF-16
Windows中将文件另存为Unicode,此处Unicode实际上是UTF-16,Unicode不能写在硬盘中。与UTF-8不同的是,UTF-16最多将Unicode压缩到16位。
ecs2:2个字节
ecs4:4个字节(现在用的是这种) - GBK2312
亚洲地区使用的编码,一个中文占两个字节 - GBK
亚洲地区使用的编码,是GB2312的升级版,一个中文占两个字节
GBK中一个中文占用2个字节,UTF-8中一个中文占用3个字节,GBK比UTF-8更节省空间,但是为了便于以后的扩展,最好还是使用UTF-8的编码形式。
- 单位转换
8bit = 1B
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024PB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
基础与运算符综合题
- 简述ASCII、Unicode、utf-8编码
ASCII:只表示英文,使用8位表示信息
Unicode:使用32位表示信息
utf-8:压缩Unicode编码,使用8位表示信息。在utf-8编码中一个中文占3个字节,一般可用于网络传输和数据存储。 - 简述位和字节的关系?
1字节 = 8位 - 判断下列逻辑语句的True,False
- 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
=>False or True or False and True and True or False
=>False or True or False and True or False
=>False or True or False or False
=>True - not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
=>not True and True or False and True and True or False
=>False and True or False and True and True or False
=>False or False and True and True or False
=>False or False and True or False
=>False or False or False
=>False
- 求出下列逻辑语句的值。
- 8 or 3 and 4 or 2 and 0 or 9 and 7
=>8 or 4 or 0 or 7
=>8 or 0 or 7
=>8 oor 7
=>8 - 0 or 2 and 3 and 4 or 6 and 0 or 3
=>0 or 3 and 4 or 0 or 3
=>0 or 4 or 0 or 3
=>4 or 0 or 3
=>4 or 3
=>4
- 下列结果是什么?
6 or 2 > 1=>6 or True=>6
3 or 2 > 1=>3 or True=>3
0 or 5 < 4=>0 or False=>False
5 < 4 or 3=>False or 3=>3
2 > 1 or 6=>True or 6=>True
3 and 2 > 1=>3 and True=>True
0 and 3 > 1=>0 and True=>0
2 > 1 and 3=>True and 3=>3
3 > 1 and 0=>True and 0=>0
3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2=>True and 2 or True and 4 or True=>2 or 4 or True=>2 or True=>2