python基礎篇【第一篇】:流程控制

python介紹:java

 

python由Guido van Rossum(英文不知道叫什麼,大陸名字叫「龜叔」)於1989年發明,第一個公開發行版發行於1991年。python

python能作什麼:程序員

Python是一門綜合性的語言,你幾乎能在計算機上經過Python作任何事情,如下是Python應該最普遍的幾個方面web

  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配置管理的SaltStack\Ansible, 作虛擬化的OpenStack,
  5. 其它程序:你知道嗎?Python 用來寫爬蟲也是很拿手的,

python特色:shell

  1,Python「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,並且相比較其餘語言較容易入門。服務器

  2,免費開源,開發效率很是高,可移植性,開發高效有豐富的庫,可嵌入性,高級語言你無需考慮諸如如何管理你的程序使用的內存一類的底層細節網絡

  3,python具備豐富和強大的庫。他經常被稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆的聯結在一塊兒。常見的一種應用情形是,使用python快速生成程序的原型(有的時候甚至是程序的最終頁面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,而後封裝爲python能夠調用的擴展類庫。框架

 

python 安裝less

  Linux:    運維

Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python

查看默認Python版本
python -V
 
1、安裝gcc,用於編譯Python源碼
    yum install gcc
二、下載源碼包,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的3二、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

 

 

 

流程控制:

 

1、if...else:

一、猜一下幸運數字:
 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

 

二、判斷用戶輸入的用戶名和密碼是否正確,如正確就打印歡迎登錄,錯誤提示用戶名或密碼錯誤,結合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

 

2、while:

一、猜一個幸運數字直到猜對爲止:

 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")

二、循環,知足條件進入循環:

仍是上面的需求,容許用戶輸入嘗試三次,若是連續三次失敗的話,退出程序,使用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 >>> 
相關文章
相關標籤/搜索