• Python编码、流程控制、格式化输出


    Python编码

    初始编码:

    电脑的传输,还有储存,实际上都是010101010

    ASCII码:

    (American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

    assic码最左边一位都是0,设计者预留出来的一位,方便后期拓展。

    00000001 8位bit == 1个字节(byte)     1024byte(字节) == 1kb     1024kb == 1MB     1024MB == 1GB     1024GB == 1TB

    其他编码:

    为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。 
    GB2312 支持的汉字太少。GBK正式国家标准收录27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GBK,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

    从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

    Unicode:

    显然ASCII码无法将世界上所有的文字和符号全都表示,每个国家用自己的编码沟通起来又特别麻烦。所以一种可以代表所有字符和符号的编码诞生了,即Unicode,也叫做统一码、万国码、单一码。 
    Unicode是为了解决传统的字符编码局限性而产生的,它为每种语言每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由16位(2字节)来表示。注:此处说的的是最少2个字节,可能更多。

    UTF-8:

    是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存... 汉字最多有9万多个,用3个字节表示。

    详细讲解 
    http://www.cnblogs.com/yuanchenqi/articles/5956943.html 

     

    python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf-8。

    总结:

    Python2默认编码是ASCII码,无法识别中文

    Python3默认编码是utf-8

    解决办法:

    python2首行

    #!/usr/bin/env python

    # -*- coding:utf-8 -*-

    变量

    变量是什么?  

    变量:就是将一些运算的中间结果暂时储存到内存中,以便后续代码调用

     命名规则:

    1,必须由字母、数字、下划线任意组合,且不能以数字开头

    2,不能是Python中用到的关键字

    3,变量具有可描述性

    4,不能使用中文

    推荐定义方式:

    #驼峰体
    AgeOfOldboy = 56
    NumberOfStudents = 80
    
    #下划线
    age_of_oldboy = 56
    number_of_students = 80

    常量

    变量就是一直不变的量,必须全用大写

    #示例
    BIRTH_OF_CHINA = 1949 

    注释

    作用:方便自己和他人理解代码

    单行注释:#被注释内容

    多行注释:‘’‘注释内容’‘’ 或者 “”“注释内容”“”

    赋值:  等号右边的赋值给等号左边

    用户交互

    1,等待输入

    2,将你输入的内容赋值给了前面的变量

    3,input出来的数据type都是str

    name = input('请输入你的名字: ')
    age = input('请输入你的年龄: ')
    print('姓名 '+name,'年龄 '+age)
    
    #输出
    请输入你的名字: Marilyn
    请输入你的年龄: 24
    姓名 Marilyn 年龄 24 

    缩进

    Python的缩进有以下几个原则:

    1. 顶级代码必须顶行写
    2. 同一级别的代码,缩进必须一致
    3. 官方建议缩进用4个空格

    流程控制

    假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动机的。

    你要判断那条岔路是你真正要走的路,如果我们想让程序也能处理这样的判断怎么办? 很简单,只需要在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。

    if...else 语句

    #单分支
    if 条件:
        满足条件后要执行的代码
    
    #双分支
    if  条件:
        结果1
    else:
        结果2
    
    #多选条件
    if 条件1:
        结果1
    elif 条件2:
        结果2
    elif 条件3:
        结果3
    else:
        结果 
    #常用于用户登录验证、猜数字之类的游戏

    my_age = 23 user_input = int(input("input your guess num:")) if user_input == my_age: print("Congratulations, you got it !") elif user_input < my_age: print("Oops,think bigger!") else: print("think smaller!")

    while循环

    有一种循环叫做死循环,一旦触发,就不会停下来。建议死循环还是少写为好。

    count = 0
    while True:
        print("你是风儿我是沙,缠缠绵绵到天涯...",count)
        count +=1
    #输出
    你是风儿我是沙,缠缠绵绵到天涯... 542329
    你是风儿我是沙,缠缠绵绵到天涯... 542330
    你是风儿我是沙,缠缠绵绵到天涯... 542331
    你是风儿我是沙,缠缠绵绵到天涯... 542332
    你是风儿我是沙,缠缠绵绵到天涯... 542333
    。。。。。

    终止循环的两种方式:

    1,改变条件,使其不成立

    while flag:
        print(count)
        count = count + 1
        #终止循环
        if count > 6:
            flag = False
            print('game over!')

    2.break

    count =1
    while count <=6:
        print(count)
        break
        #下面的不再执行,结果为1
        count = count +1

    用Python计算1+2+...+100的结果

    count = 1
    sum = 0
    while count <= 100:
        sum = sum + count
        count =count +1
    print(sum)
    
    #输出
    5050

    for 循环

    continue:跳出本次循环,直接进入下一次循环
    for i in range(10):
        if i<5:
            continue #不往下走了,直接进入下一次loop
        print("loop:", i )
    
    break:跳出整个循环 跳出当前层的整个循环
    for i in range(10):
        if i>5:
            break #不往下走了,直接跳出整个loop
        print("loop:", i )
    
    pass:什么都不做,跳过本次循环,继续执行代码
    for i in range(10):
        if i==5:
            pass #跳过本次循环,继续执行
        print("loop:", i )

    while ... else ..语句

     与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句

    while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句

    count = 0
    while count <= 5 :
        count += 1
        print("Loop",count)
    else:
        print("循环正常执行完啦")
    print("-----out of while loop ------")
    
    #输出
    Loop 1
    Loop 2
    Loop 3
    Loop 4
    Loop 5
    Loop 6
    循环正常执行完啦
    -----out of while loop ------
    

    格式化输出

    %s是字符串占位符, str,传进来任何东西都会转为字符串

    %d是数字占位符, digital,如果是%d,就代表你必须只能输入数字啦

    %f 传进来任何东西都会转为浮点数

    %r 非转义,显示为原生字符 raw string 例如 直接显示为 , 不会显示为换行

    小知识点:

    1,想要在格式化输出中间要一个单纯的%,就在前面加一个%,如3%%

    2,input接收的所有输入默认都是字符串格式,所以有事需要把str转为int,如int(age)

    name = input('请输入姓名:')
    age = input('请输入年龄:')
    height = input('请输入身高:')
    msg = "我叫%s,今年%s岁,身高%s,学习进度3%%" %(name,age,height)
    print(msg)
    
    #输出
    请输入姓名:Marilyn
    请输入年龄:21
    请输入身高:164
    我叫Marilyn,今年21岁,身高164,学习进度3%

    示例:

    自定义输出文本格式,只需要把要打印的格式先准备好,需要用户输入的用占位符即可。

    name = input('请输入姓名:')
    age = input('请输入年龄:')
    sex = input('请输入性别:')
    job = input('请输入工作:')
    msg = '''
    ---------info of %s----------
    Name: %s
    Age: %d
    sex: %s
    job:%s
    ---------end---------
    '''%(name,name,int(age),sex,job)
    print(msg)
    
    #输出
    请输入姓名:Marilyn
    请输入年龄:21
    请输入性别:female
    请输入工作:It
    ---------info of Marilyn----------
    Name: Marilyn
    Age: 21
    sex: female
    job:It
    ---------end---------
    

    另一种比较高大上的格式化输出,即format,建议以后使用这种。

    #format的三种玩法 格式化输出
    res='我的名字{},年龄{}, 性别{}'.format('Marilyn',21,'female')
    print(res)
    我的名字Marilyn,年龄21, 性别female
    
    res='我的名字{0},年龄{1}, 性别{2}, 再说一遍名字{0}'.format('Marilyn',21,'female')
    print(res)
    我的名字Marilyn,年龄21, 性别female, 再说一遍名字Marilyn
    
    res='我的名字{name},年龄{age}, 性别{sex}, 再说一遍名字{name}'
    .format(name='Marilyn',age=21,sex='female')
    print(res)
    我的名字Marilyn,年龄21, 性别female, 再说一遍名字Marilyn
  • 相关阅读:
    python 获取项目的根路径
    信息系统项目管理师-1.4软件工程
    信息系统项目管理师
    信息系统项目管理师-导学
    信息系统项目管理师-考试安排
    读取text行列
    pipeline基本框架思维
    Linux压缩隐藏文件
    python+appium环境搭建
    leetcode for mysql
  • 原文地址:https://www.cnblogs.com/zhaomeng/p/10273070.html
Copyright © 2020-2023  润新知