python(二)结构语句

分支判断语句

	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:美国

扫描二维码关注公众号,回复: 8926402 查看本文章
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')
发布了16 篇原创文章 · 获赞 0 · 访问量 83

猜你喜欢

转载自blog.csdn.net/qq_31241107/article/details/103241502