zoukankan      html  css  js  c++  java
  • python基础篇【第一篇】:流程控制

    python介绍:

    python由Guido van Rossum(英文不知道叫什么,大陆名字叫“龟叔”)于1989年发明,第一个公开发行版发行于1991年。

    python能做什么:

    Python是一门综合性的语言,你几乎能在计算机上通过Python做任何事情,以下是Python应该最广泛的几个方面

    1. 网络应用:包括web网站 、服务器后台服务等
    2. 科学运算:随着NumPy、SciPy、matplotlib、ETS等众多程序库的开发,Python越来越适合于做科学计算。与科学计算领域最流行的商业软件MATLAB相比,Python是一门真正的通用程序设计语言,比MATLAB所采用的脚本语言的应用范围更广泛,有更多程序库的支持,适用于Windows和Linux等多种平台,完全免费并且开放源码。虽然MATLAB中的某些高级功能目前还无法替代,但是对于基础性、前瞻性的科研工作和应用系统的开发,完全可以用Python来完成。
    3. GUI程序:python提供了多个图形开发界面的库,包括PyQt,WxPython,自带的有Tkinter,这些库允许Python程序员很方便的创建完整的、功能健全的GUI用户界面。
    4. 系统管理工具:Python可以是做运维人员最喜欢用的语言了,可以用它来轻松的开发自动化管理工具、监控程序等,事实上现在很多开源软件也都是用Python开发的,如用于IT配置管理的SaltStackAnsible, 做虚拟化的OpenStack,
    5. 其它程序:你知道吗?Python 用来写爬虫也是很拿手的,

    python特点:

      1,Python“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,而且相比较其他语言较容易入门。

      2,免费开源,开发效率非常高,可移植性,开发高效有丰富的库,可嵌入性,高级语言你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

      3,python具有丰富和强大的库。他常常被称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松的联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有的时候甚至是程序的最终页面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,然后封装为python可以调用的扩展类库。

    python 安装

      Linux:    

    Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python

    查看默认Python版本
    python -V
     
    1、安装gcc,用于编译Python源码
        yum install gcc
    2、下载源码包,https://www.python.org/downloads/python/
    3、解压并进入源码文件
    4、编译安装
        ./configure
        make all
        make install
    5、查看版本
        /usr/local/bin/python2.7 -V
    6、修改默认Python版本
        mv /usr/bin/python /usr/bin/python2.6
        ln -s /usr/local/bin/python2.7 /usr/bin/python
    7、防止yum执行异常,修改yum使用的Python版本
        vi /usr/bin/yum
        将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6
     

      Windows版:

    1. 下载安装包:http://www.python.org/download/
    2. 双击安装包按提示“下一步”就OK了
    3. 然后设置环境变量:安装python3.5时把下面的勾 勾上就可以了
    4. 推荐使用Pycharm,可以从官方站点下载对应的版本安装即可,Pycharm有社区版(免费)和专业版,官方站点:https://www.jetbrains.com/pycharm/

    python运行

    Linux中

    新建一个hello.py文件,内容如下:

    1 print("Hello,world")

    执行python hello.py即可,这是明确指定用python解释器执行的;

    如果想要与shell一样 ./hello.py 来执行,就需要在hello.py文件头部来指定解释器,如下:

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

    注:需给文件加上执行权限; chmod +x hello.py ,如此就可以用./hello.py来执行

     

    Python解释器/种类

    CPython,原始、标准官方的实现方式,用C语言开发,
    Jython,用于和Java语言集成的实现,把Python代码直接编译成java字节码执行;
    IPython,基于CPython之上的一个交互解释器,交互上非常直观,但是执行代码功能和CPython完全一样;
    IronPython,用于和.NET框架集成的实现,可以直接把python代码编译成.Net的字节码
    PyPy,使用python语言实现的Python解释器,是动态编译器,是Psyco的后继项目;可运行在Linux的32、64位、MacOSX和Windows的32位平台上

    变量:

     先声明变量:

    >>> name = "tianjie"
    >>> print(name)
    tianjie

    变量的作用:昵称(name),其代指内存里某个地址中保存的内容(tianjie)

     变量定义的规则:

      5name=数字不能开头,可以当中间或结尾
       !name=特殊字符不能
       name of tianjie = 不能有空格
    较长的变量名有两种写法:
      nums_of_tianjie_gf =5
      NumsOfTianjieGf=5
    还有不能用一下关键字声明变量:
      ['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']
     
     
     
    输入:
    # 将用户输入的内容赋值给 name 变量(python3写法)
    name = input("pless your name:")
    
    #python2写法
    name= raw_input("please your name:")
    
    #然后打印这个输入的内容
    print(name)
    View Code

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

    1 import getpass
    2  
    3 # 将用户输入的内容赋值给 pwds 变量
    4 pwds = getpass.getpass("请输入密码:")
    5  
    6 # 打印输入的内容
    7 print pwds
    8 
    9 注意:此方法在pycharm中不能使用
    View Code

    流程控制:

    一、if...else:

    1、猜一下幸运数字:
     1 输入一个数字作比较,如果相等输出“相等”
     2 大了,提示小一点
     3 小了提示大一点
     4 
     5 
     6 number = 6
     7 cai = int(input("My Lucky Number:"))
     8 if cai > number:
     9     print("please print smaller")
    10 elif cai < number:
    11     print("please print bigger")
    12 else:
    13     print("Congratulations, you got it")
    View Code

    2、判断用户输入的用户名和密码是否正确,如正确就打印欢迎登陆,错误提示用户名或密码错误,结合getpass模块:

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 import getpass
     5 
     6 
     7 user = 'tianjie'
     8 password = 'buzhidao'
     9 
    10 input_user = input('Username?')
    11 input_pass = getpass.getpass('Password?')
    12 
    13 if input_user == user and input_pass == password:
    14     print('欢迎登陆,%s' %(input_user))
    15 else:
    16     print('用户名或者密码错误,请稍后再试')
    View Code

    二、while:

    1、猜一个幸运数字直到猜对为止:

     1 number = 6
     2 cai = -1
     3 while number != cai:
     4     cai = int(input("My Lucky Number:"))
     5     if cai > number:
     6         print("please print smaller")
     7     elif cai < number:
     8         print("please print bigger")
     9     #else:
    10     #   print("Congratulations, you got it")
    11         #break
    12 print("Congratulations, you got it")

    2、循环,满足条件进入循环:

    还是上面的需求,允许用户输入尝试三次,如果连续三次失败的话,退出程序,使用while循环来处理:

     1 #!/usr/bin/env python
     2 # -*- coding :utf-8 -*-
     3 
     4 user="tianjie"
     5 password="qweasd"
     6 
     7 count=0
     8 
     9 
    10 while True:
    11     if count<3:
    12         name=input("input your user:")
    13         pasw=input("password:")
    14         if name==user and password == pasw:
    15             print("%s欢迎登陆"%(name))
    16             break
    17         else:
    18             print("用户或密码错误")
    19             count+=1
    20     else:
    21         flag=input("输入次数过多是否继续,y/n:")
    22         if flag == "y":
    23             count=0
    24         elif flag == "n":
    25             break
    View Code

    3,for.... in....

    还是上面的需求,只允许用户输错10次,如果连续三次失败的话,提示是否继续,,使用for循环来处理:

     1 #!/usr/bin/env python
     2 # -*- coding :utf-8 -*-
     3 
     4 user="tianjie"
     5 password="qweasd"
     6 
     7 count=0
     8 for i in range(10):
     9     if count<3:
    10         name=input("input your user:")
    11         pasw=input("password:")
    12         if name==user and password == pasw:
    13             print("%s欢迎登陆"%(name))
    14             break
    15         else:
    16             print("用户或密码错误")
    17 
    18     else:
    19         flag=input("输入次数过多是否继续,y/n:")
    20         if flag == "y":
    21             count=0
    22             continue
    23         elif flag == "n":
    24             break
    25 
    26     count += 1
    View Code

    python模块:


    os模块:是Python标准库中用于访问操作系统功能的模块,非常NB 可以调用操作系统的命令着实没有想到!

    1 >>> import os   #先导入模块
    2 >>> help(os)     #获取os帮助信息

    列出可以用的模块

    1 1 >>> dir(os)
    2 2 ['EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', 'EX_USAGE', 'F_OK', 'NGROUPS_MAX', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_DIRECT', 'O_DIRECTORY', 'O_DSYNC', 'O_EXCL', 'O_LARGEFILE', 'O_NDELAY', 'O_NOATIME', 'O_NOCTTY', 'O_NOFOLLOW', 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_RSYNC', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'P_NOWAIT', 'P_NOWAITO', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'ST_APPEND', 'ST_MANDLOCK', 'ST_NOATIME', 'ST_NODEV', 'ST_NODIRATIME', 'ST_NOEXEC', 'ST_NOSUID', 'ST_RDONLY', 'ST_RELATIME', 'ST_SYNCHRONOUS', 'ST_WRITE', 'TMP_MAX', 'UserDict', 'WCONTINUED', 'WCOREDUMP', 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result', '_make_statvfs_result', '_pickle_stat_result', '_pickle_statvfs_result', '_spawnvef', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'chown', 'chroot', 'close', 'closerange', 'confstr', 'confstr_names', 'ctermid', 'curdir', 'defpath', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fchmod', 'fchown', 'fdatasync', 'fdopen', 'fork', 'forkpty', 'fpathconf', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'getcwd', 'getcwdu', 'getegid', 'getenv', 'geteuid', 'getgid', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getsid', 'getuid', 'isatty', 'kill', 'killpg', 'lchown', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'major', 'makedev', 'makedirs', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf', 'pathconf_names', 'pathsep', 'pipe', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'setegid', 'seteuid', 'setgid', 'setgroups', 'setpgid', 'setpgrp', 'setregid', 'setreuid', 'setsid', 'setuid', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe', 'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'stat', 'stat_float_times', 'stat_result', 'statvfs', 'statvfs_result', 'strerror', 'symlink', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp', 'tcsetpgrp', 'tempnam', 'times', 'tmpfile', 'tmpnam', 'ttyname', 'umask', 'uname', 'unlink', 'unsetenv', 'urandom', 'utime', 'wait', 'wait3', 'wait4', 'waitpid', 'walk', 'write']
    View Code

    os.system():调用本地命令:

     1 如查看系统分区使用:
     2 >>> os.system("fdisk -l")
     3 
     4 Disk /dev/sda: 500.1 GB, 500107862016 bytes
     5 255 heads, 63 sectors/track, 60801 cylinders
     6 Units = cylinders of 16065 * 512 = 8225280 bytes
     7 Sector size (logical/physical): 512 bytes / 4096 bytes
     8 I/O size (minimum/optimal): 4096 bytes / 4096 bytes
     9 Disk identifier: 0x148bf7a4
    10 
    11    Device Boot      Start         End      Blocks   Id  System
    12 /dev/sda1   *           1          77      614400   83  Linux
    13 Partition 1 does not end on cylinder boundary.
    14 /dev/sda2              77        6451    51200000   83  Linux
    15 /dev/sda3            6451        7471     8192000   82  Linux swap / Solaris
    16 /dev/sda4            7471       60802   428379160    5  Extended
    17 /dev/sda5            7471       60802   428378112   83  Linux
    18 0
    19 >>> 
    View Code
    #如果赋予变量的话 ,只是把执行命令的状态返回值赋予了变量,并没有把执行结果打印出来
    
    
    >>> a=os.system("fdisk -l")
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          77      614400   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              77        6451    51200000   83  Linux
    /dev/sda3            6451        7471     8192000   82  Linux swap / Solaris
    /dev/sda4            7471       60802   428379160    5  Extended
    /dev/sda5            7471       60802   428378112   83  Linux
    
    >>> print(a)
    0

    popen 是把执行结果给保存,然后用read()打开 :

     1 >>> a=os.popen
     2 >>> a=os.popen("df -lh")
     3 >>> print(a)
     4 <open file 'df -lh', mode 'r' at 0x1f93270>
     5 >>> print(a.read())
     6 Filesystem      Size  Used Avail Use% Mounted on
     7 /dev/sda2        48G   11G   36G  23% /
     8 tmpfs           934M  300K  934M   1% /dev/shm
     9 /dev/sda1       575M   31M  514M   6% /boot
    10 /dev/sda5       402G  6.1G  376G   2% /home
    11 
    12 >>> 
     
  • 相关阅读:
    delphi 获取图片某一像素的颜色值
    delphi常用快捷键(我自己经常使用的)
    115.css的initial、inherit、unset
    菜鸡前端的配色记录-echart比较好看的配色
    114.关于前端的vertical-align详解
    Problem
    Oracle从入门到入门的学习历程
    使用navicat连接oracleXE
    使用ElementUI遭遇问题记录
    SonarQube遇见的问题
  • 原文地址:https://www.cnblogs.com/tianjie0522/p/5478614.html
Copyright © 2011-2022 走看看