python之路-1

来源:http://www.cnblogs.com/suchagal/archive/2017/12/18/8054406.html
-Advertisement-
Play Games

一 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 range0102

表示i09,間隔為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中這些流程式控制制語句與javaC的不同點:

第一: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 用戶名中密碼的加密

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天主管給了我個需求,說要用混合開發,用H5調用本地攝像頭進行掃描二維碼,我之前有做過原生安卓的二維碼掃一掃,主要是通過調用zxing插件進行操作的,其中還弄了個閃光燈.但是純H5的沒接觸過,心裡沒底,於是晚上回家開始網上各處找方案.以下是我對於H5掃描二維碼以及調用本地攝像頭的理解以及代碼.科普網 ...
  • 一場大戲落幕,首屆DDD中國峰會如大會主題色一般的紅。或許在12月9日這一天,全中國的DDD粉絲大約有一半都匯聚在了國家會議中心。聽起來是幸,其實是不幸,因為DDD在中國的人群基數實在是太少了。 因為要負責大會的其中一個Track,期間又要接受採訪,另外還有朋友到訪,所以除了前面的兩個keynote ...
  • 由於某些特定的業務場景,當多個小程式需要一個服務端後臺提供數據時,大家可能想到是HTTP路由。是的,實際上我們使用微服務的GateWay網關也是一樣的,如下圖微服務架構: 網關GateWay的作用在於提供統一的入口來訪問內部的API, 隔離外部訪問與內部系統。集成了非業務性的功能(如安全檢查、頻次限... ...
  • 一:介紹 愛回收是一個和京東回收類似的產品,本質是將用戶不需要的手機,電腦,數位產品等進行回收,我之前使用京東回收過冰箱,感覺京東回收做得蠻好的,通過手機就能搞定一切,然而愛回收我是在兩個月前逛街無意發現的,看到很多年輕人去愛回收提供的設備上搜索商品,它和京東最大的不同是,在查詢回收商品現場,有工作 ...
  • php7從推出到現在,前兩天官方已經發佈到7.2版本,把自己升級和安裝php7中遇到的問題和解決方法做一個筆記,內容主要包括:1) mysql2) php3) nginx4) memcache擴展5) redis擴展 由於內容很長,會分為多篇文章來講述,當然你可能遇到比我更多的問題需要解決,因為我們 ...
  • 指能夠被內置函數`next`調用並不斷返回下一個值,直到最後拋出`StopIteration`錯誤表示無法繼續返回下一個值的對象稱為迭代器(`Iterator`) ...
  • 1002. 寫出這個數 (20) 讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。 輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。 輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1空格,但一行中最後一個拼音數字後沒有空格。 輸 ...
  • 你們單位在國外搞了個伺服器,立足於美利堅,受美國法律保護。用來存放你懂的資源,以圖片和電影為主。最近流量非常可觀,為了更好的服務客戶,改善用戶體驗。 你們老闆決定增加一個投票區,用戶可以給自己喜愛的作品投票,每個月評出最喜愛作品,並且從用戶中挑選3名用戶作為獲獎用戶,獎品為蒼老師簽名寫真集。這還不簡 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...