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