zoukankan      html  css  js  c++  java
  • python之路-python初识

    Python 是一门什么样的语言?

    python是一门动态解释性的强类型定义语言

    动态语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

    静态语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

    解析:编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的。对解释执行而言,程序运行时的控制权在解释器而不在用户程序;解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

    编译:解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。对编译执行而言,运行时的控制权在用户程序。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
    解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

    强类型语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

    弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

     

    Python优缺点

    优点:

    1. Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

    2. 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

    3. 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

    4. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行

    5. 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

    6. 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

    缺点:

        1.速度慢。

        2.代码不能加密。

        3.线程不能利用多CPU问题。

    Python安装 

    windows:安装软件,将python的路径加入到windows的环境变量中。计算机属性-高级系统设置-高级-环境变量-系统变量-path(将python的路径加入到path中,注意分号)。

    linux:将linux中原有的2.6版本升级为2.7版本。

     为了兼容python3.*,现在使用的是python 2.7.10,但是CentOS 6.4中默认使用的python版本是2.6.6,故需要升级版本。
    自己做一个yum源,createrepo Packages即可 

    安装步骤如下:

    1,先安装GCC,用如下命令yum install gcc gcc-c++ openssl*

    2,下载python-2.7.10.tar.gz文件,修改文件权限chmode +x python-7.5.tar.gz
       传送门 https://www.python.org

    3,解压tar文件,tar -xzvf python-2.7.5.tar.gz

    4,cd python-2.7.5

    ./configure --prefix=/usr/local/python27 ### 注意:安装在新目录,防止覆盖系统默认安装的python

    make && make install

    5、建立软连接,使系统默认的python指向python27

    mv /usr/bin/python /usr/bin/python2.6.6.old

    ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python

    已经安装完成python的安装或升级的全部操作了,我们再来看一下现在的python的版本:

    # python -V

    Python 2.7.5

    虽然现在python已经安装完成,但是使用yum命令会有问题——yum不能正常工作:

    # yum list

    There was a problem importing one of the Python modules

    required to run yum. The error leading to this problem was:

    No module named yum

    Please install a package which provides this module, or

    verify that the module is installed correctly.

    It's possible that the above module doesn't match the

    current version of Python

    这是因为yum默认使用的python版本是2.6.6,到哪是现在的python版本是2.7.5,故会出现上述问题,只需要该一下yum的默认python配置版本就行了:

    #vi /usr/bin/yum

    将文件头部的#!/usr/bin/python改为

    #!/usr/bin/python2.6

     解释器

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

    #!/usr/bin/env python
    print("hello world")

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

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

    内容编码

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

    #!/usr/bin/env python
    #_*_ conding:utf-8 _*_
    print("你好 世界")

    变量

    一个在内存存储数据的容器。它保存程序执行的中间结果或者状态,以供后面的代码调用。

    变量定义规则:

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 以下关键字不能声明为变量名
      ['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']

    定义变量:

    !#/usr/bin/env python
    name1 = "liwenqiang"
    name2 = "alex"
    !#/usr/bin/env python
    name1 = "liwenqiang"
    name3 = name1

    这样定义变量,分别在内存中创建liwenqiang和alex,如果变成以下定义情况

    !#/usr/bin/env python
    name1 = "liwenqiang"
    name2 = name1
    name1 = "alex"
    print(name1,name2)

    如果是这样,就会输出liwenqiang和alex,不再是liwenqiang和liwenqiang,因为一开始name1和name2都指向liwenqiang,之后name重新指向了alex,但是name2的指向是没有变的。

    输入

    input(python3)、raw_input(python2)

    !#/usr/bin/env python
    name = input("name:")
    age = input("age:")
    job = input("job:")
    hobby = input("hobby:")
    info = """
    ---------------info %s-----------
    name = %s
    age = %d
    job = %s
    hobby = %s
    --------------end----------------
    """ %(name,name,age,job,hobby)       #     %s需要一一对应     占位符:%s表示字符串,%d代表数字
    print(info)

    流程控制

    需求一、用户登陆验证

    提示输入用户名和密码

     验证用户名和密码
      如果错误,则输出用户名或密码错误
      如果成功,则输出 欢迎,XXX!
    !#/usr/bin/env python
    # name = input("name:")
    # password = input("password:")
    # if name == "liwenqiang" and password == "12345":      #不管输入什么都必须加引号
    #     print("welcome")
    # else:
    #     print("wrong name or password")

    需求二、多个条件判断

    if

      elif  

      elif

    else

    如果成绩大于90,得A,如果成绩大于80,得B,如果成绩大于70,得C,如果成绩大于60得C-,成绩小于60,得D。

    !#/usr/bin/env python
    score = int(input("成绩:"))    #此处用int将输入的成绩变为整形,因为在输入成绩是就会变为字符串(例如:“91”),这样就无法进行比较。
    if score > 90:
        print("A")
    elif score > 80:
        print("B")
    elif score > 70:
        print("C")
    elif score > 60:
        print("C-")
    else:
        print("D")
    外层变量,可以被内层代码使用
    内层变量,不应被外层代码使用
     

    用户登录

    1.只有三次登陆机会
    2.第三次输入错误,锁定用户
    count = 0
    while count < 3:
    user = input("username:")
    passwd = input("passwd:")
    users = []
    with open('username.txt','r') as f: --------------username.txt这个文件需要事先创建好。
    for line in f:
    line = line.strip() #去掉换行符
    users.append(line) #将元素line添加到列表中(此处的line是指从文件中读取的内容)
    if user in users:
    print("user locked!")
    elif user == 'liwenqiang' and passwd == '111111':
    print('welcome')
    break
    else:
    print('wrong passwd or username, try again!',"you only have",2-count,"chance") #打印多个变量或者字符串,用逗号隔开
    count += 1
    if count == 3:
    with open('username.txt','a') as f: #a和w都是添加(写文件),a相当于追加,w相当于覆盖。
      f.write(user+' ') #将user所指的用户去掉空格和换行符添加到文件中,+是连接符。
    print('enter wrong usename too many times,username have locked!')

     

  • 相关阅读:
    java并发计算的几种基本使用示例
    axios、ajax和xhr前端发送测试
    Spring注解
    Android菜鸟教程笔记
    普通二叉树操作
    MyBatis
    mysql的select语句总结与索引使用
    sys.argv的意义[转]
    硬件小白学习之路(1)稳压芯片LM431
    FPGA小白学习之路(6)串口波特率问题的处理
  • 原文地址:https://www.cnblogs.com/l-w-q/p/5911525.html
Copyright © 2011-2022 走看看