一 python的一些語言規範 再寫腳本的時候我們會寫以上的“註釋行”先來看看它們的意思。 1:調用usr/bin/下的python解釋器去解釋執行你寫的python腳本; 2:系統會自己去找系統中的解釋器去執行; 3:告訴系統編碼方式;(下麵再講其它的編碼方式) 當然,linux系統下預設是安裝了 ...
一 python的一些語言規範
1#!/usr/bin/python 2#!usr/bin/env python 3# -*- coding:utf-8 -*-
再寫腳本的時候我們會寫以上的“註釋行”先來看看它們的意思。
1:調用usr/bin/下的python解釋器去解釋執行你寫的python腳本;
2:系統會自己去找系統中的解釋器去執行;
3:告訴系統編碼方式;(下麵再講其它的編碼方式)
當然,linux系統下預設是安裝了python的解釋器,所以在寫腳本的時候可以不加前面的註釋行,但是執行的時候會有所不同,如下:
第一種方法:
用創建一個hello_world.py文件,文件內容如下:(hello world是一種信仰!)
執行腳本文件:
第二種方法:
下麵是加瞭解釋器的腳本執行方式:
你們可以動手試一下,第一種寫的python腳本是沒有辦法用 ./hello_world.py的方法執行的,即使你給hello_world.py賦予了可執行的許可權。
下麵來講講編碼方式的改變:
1 ascii(美國信息交換標準代碼):最早的編碼方式
2 GB2312:支持漢字
3 GBK1.0:支持更多的漢字
4 GB180303:支持最多的漢字
5 unicode:國際統一編碼(適用於所有國家的電腦)
6 utf-8:由於unicode的編碼導致了英文字母占電腦中的記憶體變成了兩個位元組所以產生了utf-8,當是英文字母時就會自動切換兩個位元組,漢字占3位元組。
下麵講講變數名
變數:變數只能用英文字母/數字/下劃線。(即使python3.x可以用漢字作為變數名),不要用漢語拼音作為變數名(沒有原因,就是比較low),兩個到三個英文字母的變數名中間用下劃線連接。
常量:用全大寫的英文字母定義,如:PIE = 3.14159265354·····
二:在linux環境中的python Tab 自動補全
在linux中打開python的編輯器時寫代碼的時候是不會自動補全的,要導入補全的模塊,操作如下:
1 進入python編輯器中 命令sys.path 看看自己python裝位置
>>> sys.path ['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages']
可以看到我的python在usr/lib/python2.7
2 在usr/lib/下新建一個 startup.py文件,文件的代碼如下:
#!/usr/bin/python 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
3 在 .bashrc文件中添加讀取模塊(以下是個shell,網頁沒有shell)
# .bashrc 000#for pyton # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi 000export PYTHONSTARTUP=/usr/lib/python2.7/startup.py
4 source .bashrc
5 在python編輯器中導入模塊。
三 python中變數賦值邏輯
name = "xuwei" name2 = name name = "suchagal" print(name, name2)
輸出結果:
suchagal,xuwei
可以看出name2並不是指向name,而是指向name指向的值。
四 用戶名中的密碼加密輸入
我們在網頁中可以看到,當用戶要輸入密碼的時候,密碼是黑色的點,在linux系統的登陸的時候輸密碼的時候你是看不到密碼的,這個怎麼實現了?
只需要導入 getpass模塊,在代碼中調用,如下:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal import getpass username = input("username:") password = getpass.getpass("password:") print(username,password)
這樣在執行的時候,輸密碼的時候,密碼就會被加密起來。
五 python中的輸出控制
舉個慄子
要實現如下的輸出:
------------ info of---------- name:xuwei age:21 job:IT salary:20000
方法:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal name = input("name:") age = input("age:") job = input("job:") salary = input("salary:") info = ''' ------------ info of---------- name:'''+name+''' age:'''+age+''' job:'''+job+''' salary:'''+salary info1 = ''' ------------ info of---------- name: %s age: %s job: %s salary: %s ''' % (name,age,job,salary) info2 = ''' ------------ info of---------- name:{_name} age:{_age} job:{_job} salary:{_salary} '''.format(_name=name, _age=age, _job=job, _salary=salary) info3 = ''' ------------ info of---------- name:{0} age:{1} job:{2} salary:{3} '''.format(name, age, job, salary) print(info) print(info1) print(info2) print(info3) print("-----ifo $------\n" "name: %s\n" "age: %s\n" "job: %s\n" "salary: %s" % (name,age,job,salary))
info,info1,info2,info3,print()一共五種方法分別為(第一種,第二種···)
講講這幾種方法的不同:
第一種:處理速度慢,占記憶體空間
第二種:和第五種差不多,比較常用
第三種:和第四種如出一轍,就是其中的變數變成了數字(註意數字的{})
六 python的流程式控制制
1,if ···elif···else···
和C語言的if ···else 用法類似(下麵講不同),elif就是else if 的意思
2,while···
while後面的表達式為真就迴圈其以下的代碼,否則停止,一般和break連用,當迴圈得到想要的結果時,可以通過break跳出迴圈。和C/JAVA中的類似(為什麼說類似,下麵講)
3,for···
for迴圈應該是和C/JAVA差別最大的一個了,用法:
for I in range(0,10,2)
表示i從0到9,間隔為2 賦值,來個例子:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal for i in range(0,10,2): print(i) if i ==6: print("i like six")
E:\python\python.exe E:/pycharm_workstation/2017-12-17/for迴圈.py 0 2 4 6 i like six 8 Process finished with exit code 0
在python中這些流程式控制制語句與java和C的不同點:
第一:python獨特的縮進體制,如上圖,
第二:這些流程式控制制語句的後面都能接else,表示這個流程全部運行結束,並不是因為break跳出的。也就是說由於break跳出流程式控制制時是不執行else中的代碼的。
獻上一個小游戲:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal count = 0 age_of_suchagal = 23 while count < 3: guess_age = int(input("guess age:")) count = count + 1 if guess_age == age_of_suchagal: print("you are smart!") break elif guess_age < age_of_suchagal: print("ur guess is smaller") else : print("ur guess is bigger") if count == 3: guess_continue = input("do u want to try again?") if guess_continue != 'n': count = 0
好了,就寫這麼多了。送上一句勵志英文
we cannot give up trying, fighting was worth it!
1.1 用戶名中密碼的加密