zoukankan      html  css  js  c++  java
  • python 之路,Day 1 python基础 之 课后随笔

    首先是抱着被忽悠的心态,购买了老男孩的什么什么什么(你懂得!!),开始了一周一堂课时的听,然后就是做,自己的博客,首先附上整理的内容吧。

    1day 。。。。

    一、 Hell world 程序

    在linux 下创建一个文件叫hello.py,并输入

    1
    print("Hello World!")

    然后执行命令:python hello.py ,输出

    1
    2
    3
    localhost:~ jieli$ vim hello.py
    localhost:~ jieli$ python hello.py
    Hello World!

     

    指定解释器

    上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

    如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

    1
    2
    3
    #!/usr/bin/env python
      
    print "hello,world"

    如此一来,执行: ./hello.py 即可。

    ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

    在交互器中执行 

    除了把程序写在文件里,还可以直接调用python自带的交互器运行代码, 

    1
    2
    3
    4
    5
    6
    localhost:~ jieli$ python
    Python 2.7.10 (default, Oct 23 201518:05:06)
    [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
    Type "help""copyright""credits" or "license" for more information.
    >>> print("Hello World!")
    Hello World!

    二、变量字符编码

    声明变量

    1
    2
    3
    #_*_coding:utf-8_*_
     
    name = "Hai Tian"

    上述代码声明了一个变量,变量名为: name,变量name的值为:"Hai Tian" 

    变量定义的规则:

        • 变量名只能是 字母、数字或下划线的任意组合
        • 变量名的第一个字符不能是数字
        • 以下关键字不能声明为变量名
          ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

    变量的赋值

    1
    2
    3
    4
    5
    6
    7
    8
    name = "Alex Li"
     
    name2 = name
    print(name,name2)
     
    name = "Jack"
     
    print("What is the value of name2 now?")

     

    三、字符编码

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

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

    关于中文

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

    GB2312(1980年)一共收录了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。

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

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

    显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

    Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
    注:此处说的的是最少2个字节,可能更多

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

    所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

    报错:ascii码无法表示中文

    1
    2
    3
    #!/usr/bin/env python
      
    print "你好,世界"

    改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

    1
    2
    3
    4
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
      
    print "你好,世界"

    注释

      当行注视:# 被注释内容

      多行注释:""" 被注释内容 """

    四、用户输入

    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/env python
    #_*_coding:utf-8_*_
     
     
    #name = raw_input("What is your name?") #only on python 2.x
    name = input("What is your name?")
    print("Hello " + name )

    输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
      
    import getpass
      
    # 将用户输入的内容赋值给 name 变量
    pwd = getpass.getpass("请输入密码:")
      
    # 打印输入的内容
    print(pwd)

    五、模块初识  

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。

    sys

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import sys
     
    print(sys.argv)
     
     
    #输出
    $ python test.py helo world
    ['test.py''helo''world']  #把执行脚本时传递的参数获取到了

      

    os

    1
    2
    3
    4
    5
    6
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import os
     
    os.system("df -h"#调用系统命令

    完全结合一下  

    1
    2
    3
    import os,sys
     
    os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行

    自己写个模块

    python tab补全模块

    import sys
    import readline
    import rlcompleter
    
    if sys.platform == 'darwin' and sys.version_info[0] == 2:
        readline.parse_and_bind("bind ^I rl_complete")
    else:
        readline.parse_and_bind("tab: complete")  # linux and python3 on mac
    
    for mac
    #!/usr/bin/env python 
    # python startup file 
    import sys
    import readline
    import rlcompleter
    import atexit
    import os
    # tab completion 
    readline.parse_and_bind('tab: complete')
    # history file 
    histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
    try:
        readline.read_history_file(histfile)
    except IOError:
        pass
    atexit.register(readline.write_history_file, histfile)
    del os, histfile, readline, rlcompleter
    
    for Linux

     写完保存后就可以使用了

    1
    2
    3
    4
    5
    localhost:~ hai tian$ python
    Python 2.7.10 (default, Oct 23 201518:05:06)
    [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
    Type "help""copyright""credits" or "license" for more information.
    >>> import tab

    你会发现,上面自己写的tab.py模块只能在当前目录下导入,如果想在系统的何何一个地方都使用怎么办呢? 此时你就要把这个tab.py放到python全局环境变量目录里啦,基本一般都放在一个叫 Python/2.7/site-packages目录下,这个目录在不同的OS里放的位置不一样,用 print(sys.path) 可以查看python环境变量列表。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    附上作业,老师是伟大滴,所以作业应该是可以交滴:::

    作业要求:

    1)输入用户名密码

    2)认证成功后显示欢迎信息

    3)输错三次后锁定

    # -*- coding:utf-8 -*-
    import  os,sys,getpass
    
    u = 0
    while u < 3:
        username = input("请输入用户名:")
        lock_file = open('account_lock.txt','r+')
        lock_list = lock_file.readlines()
        for lock_line in lock_list:
            lock_line = lock_line.strip('
    ')
            if username == lock_line:
                print('用户%s已经被锁定,请联系您的系统管理员'%username)
                sys.exit(1)
        user_file = open('account.txt','r')
        user_list = user_file.readlines()
    
        for user_line in user_list:
            (user,passwd) = user_line.strip('
    ').split()
            if username == user:
                p = 0
                while p < 3:
                    password = getpass.getpass('请输入密码:')
                    if password == passwd:
                        print('欢迎%s登陆系统'%username)
                        sys.exit(0)
                    else:
                        if p != 2:
                            print('对不起%s密码多无,请重新输入,您还有%d次机会'%(username,2 - p))
                    p += 1
    
                else:
                    lock_file.write(username + '
    ')
                    sys.exit('对不起%s用户已经锁定,请联系系统管理员'%username)
            else:
                pass
        else:
            if u != 2:
                print('对不起%s输入错误,请重新输入,您还有%d次机会'%(username,2 - u))
        u += 1
    else:
        sys.exit('因为您的错误输入,程序已经退出,请重新运行')
    lock_f.close()
    View Code

    备注:

    账户文件account.txt内容如下:

    test 123

    账户锁定文件account_lock.txt默认为空

    流程图示例:

    ~~~~~~~~~~~~

    好啦今天python 就到这了。。

  • 相关阅读:
    jQuery插件开发精品教程,让你的jQuery提升一个台阶
    Elasticsearch 更新和删除文档的过程
    Elasticsearch集群健康状态显示为yellow排查
    Golang官方包依赖管理工具 go mod
    Golang几种常用配置文件使用方法总结
    SQL高级功能:窗口函数
    MySQL经典50题
    MySQL 性能调优和系统资源优化解决方案
    【排序算法】堆排序的推导及实现
    增长策略:如何用AB测试进行活动评估及优化?
  • 原文地址:https://www.cnblogs.com/Star-Haitian/p/7400207.html
Copyright © 2011-2022 走看看