分支判断语句
if condition:
block
elif condition:
block
elif condition:
block
else:
block
1.condition必须为bool类型(其它类型有False等价)
False等价:空字符串,0,空字典,空元组,空列表,None。。。。等
2.condition必须要有:(冒号)
3.block前要有一个缩进,表明这个block是上一行if的执行体
一个缩进就是一个Tab键或4个空格
4.block后无结束标点符号
5.当if中condition中不满足,进入elif分支中继续判断
6.elif分支可以有0——N个,不宜过多
7.当if和elif都不满足时,直接执行else中block
8.else可以有0或1个
9.所有分支只会执行一个,执行后其它分支不在执行
'''
示例一:
分段函数求值:
3x - 5 (x > 1)
f(x) = x + 2 (-1 <= x <= 1)
5x + 3 (x < -1)
'''
x=float(input('请输入函数x的值:'))
if x > 1:
y=3*x-5
elif x>=-1:
y=x + 2
else :
y=5*x + 3
print('f(%.2f)=%.2f'%(x,y))#字符串格式符
'''
字符串格式符
a = int(input('a = '))#输入1
b = int(input('b = '))#输入1
print('%d + %d = %d' % (a, b, a + b)) : %d表示1个整数占位符,%()中填入参数,将参数根据位置传入%d中
将%d替换为对应的参数值
输出 1 + 1 = 2
%d 十进制整数
%s 字符串
%f 浮点数
F=float(input('请输入华氏温度:'))
#摄氏温度为
C=(F-32)*5/9
print('华氏温度%.2f对应的摄氏温度为%.2f '%(F,C))
%.2f :表示一个浮点数,小数点后保留2位,会自动四舍五入
'''
'''
示例二:
百分制成绩转换为等级制度
90分以上 --> A
80分~89分 --> B
70分~79分 --> C
60分~69分 --> D
60分以下 --> E
'''
score=float(input('请输入学生成绩:'))
if score >= 90:
grade='A'
elif score >= 80 :
grade='B'
elif score >= 70 :
grade='C'
elif score >= 60 :
grade='D'
else:
grade='E'
print('成绩为%.1f的学生对应的等级是%s'%(score,grade))
循环语句
循环语句一:
for element in iterable:
block
else:
block
1.关键字for ,in 不可缺少
2.从可迭代对象iterable中取出元素element
3.block前缩进
4.for循环正常结束后执行else语句(else可以没有)
非正常结束不会执行else语句,如return/break/异常等
5.else可以没有
6.不获取可迭代对象中的元素,只是循环一定次数,可以将element改为下划线
for _ in range(2):
print('block')
range()会产生一个可迭代的数值序列
range(101)可以产生一个0到100的整数序列。
range(1, 100)可以产生一个1到99的整数序列。
range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量
'''
示例一:利用嵌套循环输出九九乘法表
示例二:判断一个数是否为素数,利用input函数从键盘获取一个数,利用math的sqrt函数取出输入数字的平方根,从2到平方根+1判断能否被这个数整除即可
示例三:计算两个正整数的最小公约数与最小公倍数
示例四:打印各种三角形图案
*
**
***
****
*****
*
**
***
****
*****
*
***
*****
*******
*********
Version:0.1
Author:Hu
'''
#九九乘法表
for x in range(1,10):
for y in range(1,x+1):
print('%d * %d = %d'%(x,y,x*y),end='\t')#end='\t' 表示在字符串后拼接一个缩进位
print(' ')
#判断一个数是否为素数(简略版,不适合大量数据)
from math import sqrt
num = int(input('请输入一个大于2的整数:'))
sqrts = int(sqrt(num))
for x in range(2,sqrts+1):#返回一个数的平方根
if num % x == 0:
print('你输入的这个数不是素数')
break
else :
print('你输入的这个数是素数')
break
#计算两个正整数的最小公约数与最小公倍数
x=int(input('请输入一个正整数'))
y=int(input('请输入一个正整数'))
if x > y:
x,y = y,x #交换数值
for num in range(x,0,-1):
if x % num == 0 and y % num == 0:
print('%d和%d的最小公约数为%d'%(x,y,num))
print('%d和%d的最小公倍数为%d'%(x,y,x * y // num))
break
#打印各种三角形图案
num=int(input('请输入三角形的行数:'))+1
for x in range(1,num):
for y in range(1,x+1):
print('*',end='\t')
print('')
for x in range(1,num):
for y in range(1,num):
if y < num-x :
print('',end='\t')
else:
print('*',end='\t')
print('')
for x in range(1,num):
for y in range(1,num-x):
print('',end='\t')
for y in range(2 * x -1):
print('*',end='\t')
print('')
#(常见重点)
#斐波那契数列:1、1、2、3、5、8、13、21、34、…
#F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
n = int(input('请输入要获取斐波那契数列的个数: '))
i = 0
j = 1
for _ in range(n):
i , j = j ,i + j
print(i , end =' ')
循环语句二:
while condition:
block
else :
block
用法与for类似
flag = 10
while flag: #此处为False等价,非0为True,0为False
print(flag)
flag -=1 #自减1,用于改变判断结果,跳出循环
break 跳出最近的整个循环
continue 跳出本次循环,进入下一次循环
return 结束整个函数
pass 为了保持程序结构的完整性,不做什么事,一般做占位语句
flag = 10
while flag:
flag -=1
if flag == 5:
continue
print(flag,end = ' ')
#9 8 7 6 4 3 2 1 0
flag = 10
while flag:
flag -=1
if flag == 5:
break
print(flag,end = ' ')
print('已跳出循环')
#9 8 7 6 已跳出循环
flag = 10
while flag:
flag -=1
if flag == 5:
return # 函数下面代码不在执行
print(flag,end = ' ')
print('已跳出循环')
#9 8 7 6
编码方式:
字符集:ASCII,Unicode
字符编码规则:UTF-8,UTF-16,GBK
ascii:美国
A:00000010 8位二进制 一个字节(bytes)
一个字节(bytes)用8位二进制数表示,最初设计时只使用了7位,剩下一位为拓展位,所以8位二进制数最左侧是0
一个字节(bytes)代表一个字符,一个字符可以表示一个英文字母
一个中文汉字占两个字节的空间
unicode:万国码,为了统一世界各国语言的不用,统一用2个字节(bytes)代表一个字符,可以表达2**16=65556个不同的字符(中文大致有九万多个),称为万国语言,特点:速度快,但浪费空间
2个字节表示一个字符,一个字符可以表示一个英文字母
4个字节表示一个中文
原本可以用一个字节存储的英文字母在Unicode里面必须存两个字节
(规则就是在原来英文字母对应ASCII码前面补0),这就产生了浪费
那么有没有一种既能消除乱码,又能避免浪费的编码方式呢?答案就是UTF-8!
utf-8:为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢
python2 默认是ASCII编码,不含中文,会出现中文乱码,文档的开头添加#-*-coding:utf-8-*-
python3 默认utf-8编码,包含所有中文
gbk:是中文的字符编码,用2个字节代表一个中文,英文字母一个字节
A:00000110 8位 一个字节
中:00000010 00000110 16位 两个字节
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的存储,传输,不能是unicode (只能是utf-8 utf-16 gbk gbk2312 ascii等)
import sys
print(sys.getdefaultencoding())#获取当前python编码方式(不是指计算机系统)
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的存储,传输,不能是unicode (只能是utf-8 utf-16 gbk gbk2312 ascii等)
python3:
str 在内存中是Unicode编码。不便于传输,存储,需要转化
bytes类型:和str类似,仅在于编码不同,bytes的编码可以是utf-8,gbk,gb2312,ascii等
str转化为bytes后再传输,转化
表现形式:
对于英文:
str:表现形式:s = 'x'
编码方式:010101010 unicode
bytes:表现形式:s = b'x'
编码方式:000101010 utf-8 gbk。。。。
对于中文:
str:表现形式:s = '中国'
编码方式:010101010 unicode
bytes: 表现形式:s = b' x\e91\e91\e01\e21\e31\e32' (python2会报错)
编码方式:000101010 utf-8 gbk。。。。
encode 编码,如何将 str ——> bytes
使用方法: str.encode('utf-8')
decode 解码,如何将 bytes——> str
使用方法: bytes.decode('utf-8')