python之day1

发布时间:2019-09-11 07:43:11编辑:auto阅读(1827)

      初学python会有学python2还是python3的困惑,因为现在公司的实际环境下大部分还是用2.7编写的代码,python3.X又向下不兼容2.X,我认为作为初学者更应该从python3着手:

    1. python3python2区别不是很大,只有在某些语法、某些库名不一样而已;

    2. python2官方只支持到2020年,且不会有大版本的更新;

    3. 官方的所有标准库只在python3中更新;

    所以还是忘掉python2吧,它已经是过去时了。

     

    第一个程序hello world!

    print('hello world!') #这里单引号或双引号均可

    wKiom1jeWnOSzEqOAAAdGP14Lps477.png-wh_50

         也可以创建一个helloworld.py的文件执行:

    wKiom1jeXd_gNtWMAAAUJ0S4HCk894.png-wh_50

    Linux下(为2.7版本):

    #!/usr/bin/env python  #声明解释器是什么,告诉操作系统用什么方式打开

    Print “hello world”    #python3中必须加(),python2中可以省略

    保存为hello.py

    增加执行权限:chmod 755 hello.py

    直接执行: ./hello.py即可

     

    变量

     

    如何定义变量:name = ”Tone”    #变量声名并赋值后指向该值的内存地址

    调用变量:print(“My name is”,name)

    变量定义的原则

    1、  变量名只能是字母、数字或下划线的任意组合;

    2、  变量名的第一个字符不能是数字;

    3、  关键字不能声明为变量;

    4、  约定俗成:变量名有含义英文单词,不要用拼音,单词之间用_隔开,gf_of_oldboy,每个单词的首字母大写;

     

    Python中没有常量的概念,但约定俗成变量全是大写表示常量,如:PIE = “chang liang”(注:可以更改)

     

    字符编码与二进制

     

     

    Python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascii

     

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

     

    为了处理汉字,程序员设计了用于简体中文的GB231和用于繁体中文的big5

     

    GB23121980年)共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中5个空位是D7FA-D7FE

    GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求,所以手机、MP3一般只支持GB2312

     ASCIIGB2312GBKGB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一的处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312GBKGB18030都属于双字节字符集(DBCS)。

    有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GBK18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

     

    各个国家使用扩展位,导致混乱,国际开始定制新的标准即:Unicode

    Unicode占用2个字符,统一编码

    UTF-8 可变长的编码,存英文占用1byte,中文占用3bytes

     

    Python2中默认使用ASCII编码,所以不支持中文,可以指定编码方式:

    # -*- coding:UTF-8  -*-

    Name = “你好,世界

    Printname

     

    Python3天生支持中文,默认就是utf-8

     

     

    用户交互程序

     

    注释:单行可以用#,多行可以用三个’’’开头,三个’’’结尾

    赋值:单行可以使用'或是"没有区别,只是在值中有单引号出现时使用"更清晰,name="i'm Tone"

          多行赋值必须使用'''

     

    用户输入:input等待用户输入

             python2中的raw_input和python3中的input一样,python2中的input不要使用

    格式化输出1:多行可以使用加号拼接的方法(尽量不要用该方法)

    格式化输出2:可以使用%s:字符串;%d:数字;%f:浮点型的方式,如下程序

                 默认所有输入的数据类型为字符串,可以使用int强制转换,并可以使用type查看类型

    name= input("name:")
    age = int(input("age:"))
    print(type(age))
    job
    = input("job:")
    salary = int(input("salary:"))
    info = '''
    ------------info of %s------------
    name:%s
    age:%d
    job:%s
    salary:%d
    '''
    %(name,name,age,job,salary)
    print (info)

    格式化输出3:可以使用{}的方式,如下

    info='''

    -----------------info of {_name}----------------------

    name:{_name}

    age:{_age}

    job:{_job}

    salary:{_salary}

    '''.format(_name=name,

                    _age=age,

                    _job=job,

                    _salary=salary)

    或者

    info='''

    -----------------info of {0}----------------------

    name:{0}

    age:{1}

    job:{2}

    salary:{3}

    '''.format(name,age,job,salary)

     

     

     

    If else流程判断

     

    实现密码密文显示效果:

    import getpass   #调用模块标准库

    username=input("username:")

    password=getpass.getpass("password:")    #pycharm中不好用

    print(username,password)

     

    判断输入的用户名密码是否正确

    _username="tone"

    _password="pass123"

    username=input("username:")

    password=input("password:")

    if _username==username and _password==password:

       print("welcome user {name} login..".format(name=username))   #强制缩进

    else:

       print("invalid username or password.")

     

    定义一个年龄,然后判断年龄大小

     

    real_age = 33
    guess_age = int(input("input your guess age:"))
    if guess_age == real_age:
       
    print("congratulations,you got it.")
    elif guess_age > real_age:
       
    print("think smaller..")
    else:
       
    print("think bigger..")

     

    While循环

    在上面程序基础上增加功能:给3次机会猜年龄

     

    real_age= 33
    count = 0
    while count < 3:
       
    guess_age = int(input("input your guess age:"))
       
    if guess_age == real_age:
           
    print("congratulations,you got it.")
       
    elif guess_age > real_age:
           
    print("think smaller..")
       
    else:
           
    print("think bigger..")
       
    count += 1

     

     

    增加友好提示信息,当猜3次没有猜出来,提示游戏结束(low代码)

     

    real_age= 33
    count = 0
    while count < 3:
       
    guess_age = int(input("input your guess age:"))
       
    if guess_age == real_age:
           
    print("congratulations,you got it.")
           
    break
        elif
    guess_age > real_age:
           
    print("think smaller..")
       
    else:
           
    print("think bigger..")
       
    count += 1
       
    if count == 3:
           
    print("guess too many times,game over!")


     

    增加友好提示信息,当猜3次没有猜出来,提示游戏结束(high代码)使用while  else的语法

     

    real_age= 33
    count = 0
    while count < 3:
       
    guess_age = int(input("input your guess age:"))
       
    if guess_age == real_age:
           
    print("congratulations,you got it.")
           
    break
        elif
    guess_age > real_age:
           
    print("think smaller..")
       
    else:
           
    print("think bigger..")
       
    count += 1
    else:
       
    print("guess too many times,game over!")

     

    While循环优化版本

     

    range(10)表示09的一组数字集

    for 可以结合else使用

    range0102010之间的数,2表示间隔数步长

     

    猜年龄游戏,升级到每次有3次机会,并可以选择玩与不玩

     

    real_age= 33
    count = 0
    while count < 3:
       
    guess_age = int(input("guess age:"))
       
    if guess_age == real_age:
           
    print("congratulation,you got it")
           
    break
        elif
    guess_age > real_age:
           
    print("think smaller..")
       
    else:
           
    print("think bigger..")
       
    count += 1
       
    if count == 3:
           
    play_agin = input("play game agin,yes or not:")
           
    if play_agin == "y" or play_agin == "yes":
               
    count = 0

     

    For循环及作业要求

     

    总结:continue表示结束本次循环,不执行continue以下的代码,但继续循环

                break结束整个循环,不执行break以下的代码,并跳出循环,继续执行循环外的代码

     

     

     

     

     

关键字