python基礎知識(day1)

来源:http://www.cnblogs.com/zilin-2017/archive/2017/05/21/6886484.html
-Advertisement-
Play Games

一、py2和py3的區別 最大的區別在於,py3對Unicode的支持 官方將在2020年停止對py2.7的支持 One popular module that don't yet support Python 3 is Twisted (for networking and other appli ...


一、py2和py3的區別

最大的區別在於,py3對Unicode的支持

官方將在2020年停止對py2.7的支持

One popular module that don't yet support Python 3 is Twisted (for networking and other applications).後續將會支持

 

二、Hello World程式

在linux 下創建一個文件叫hello.py,並輸入 

1 print("Hello World!")
View Code

然後執行命令:python hello.py ,輸出

1 localhost:~ jieli$ vim hello.py 
2 
3 localhost:~ jieli$ python hello.py 
4 
5 Hello World!
View Code

指定解釋器

上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。

如果想要類似於執行shell腳本一樣執行python腳本,例: ./hello.py ,那麼就需要在 hello.py 文件的頭部指定解釋器,如下:

1 #!/usr/bin/env python
2 
3   
4 
5 print "hello,world"
View Code

如此一來,執行: ./hello.py 即可。

ps:執行前需給予 hello.py 執行許可權,chmod 755 hello.py

 

三、變數

 Variables are used to store information to be referenced and manipulated in a computer program. They also provide a way of labeling data with a descriptive name, so our programs can be understood more clearly by the reader and ourselves. It is helpful to think of variables as containers that hold information. Their sole purpose is to label and store data in memory. This data can then be used throughout your program.

 變數定義的規則:

    • 變數名只能是 字母、數字或下劃線的任意組合
    • 變數名的第一個字元不能是數字
    • 以下關鍵字不能聲明為變數名 :['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']

 變數賦值:

1 name = "oldboy"
2 name2 = name
3 name = "newboy"
4 print("my name is",name,name2)
View Code

運行結果是:
my name is newboy oldboy

原因是:name和name2指向同一個字元串“oldboy”,將name重新賦值後,name指向“newboy”,而name2指向不變,仍然是“oldboy”

 

四、字元編碼

常見的編碼類型有:ASCII編碼(適用於現代英語和其他西歐語言);簡體中文的GB2312(7000+個漢字)、GBK1.0(21000+個漢字)、GBK18030(27000+個漢字);繁體中文的big5

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個位元組),即:2**8 = 256-1,所以,ASCII碼最多只能表示 255 個符號。

顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在電腦上使用的字元編碼。Unicode 是為瞭解決傳統的字元編碼方案的局限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536, 註:此處說的的是最少2個位元組,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組保存、歐洲的字元用2個位元組保存,東亞的字元用3個位元組保存...

代碼註釋

單行註視:# 被註釋內容

多行註釋:""" 被註釋內容 """

 

五、輸入與字元格式化

使用input輸入,有多種字元串格式化方法:

 1 name = input("name:")
 2 age = input("age:")
 3 job = input("job:")
 4 salary = input("salary:")
 5 
 6 info = """-------info of {_name}--------
 7 name:{_name}
 8 age:{_age}
 9 job:{_job}
10 salary:{_salary}
11 """.format(_name=name,_age=age,_job=job,_salary=salary)
12 
13 info2 = """-------info of %s--------
14 name:%s
15 age:%d
16 job:%s
17 salary:%d
18 """%(name,name,int(age),job,int(salary))
19 
20 info3 = """-------info of {0}--------
21 name:{0}
22 age:{1}
23 job:{2}
24 salary:{3}
25 """.format(name,int(age),job,int(salary))
26 
27 print(info)
28 print(info2)
29 print(info3)
View Code

對於密碼輸入,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:

1 import getpass
2 
3 # 將用戶輸入的內容賦值給 name 變數
4 
5 pwd = getpass.getpass("請輸入密碼:")
6 
7  # 列印輸入的內容
8 
9 print(pwd)
View Code

在pyCharm下使用有問題,可以在命令行下執行,看getpass效果

六、if...else表達式

場景一: 通過條件判斷用戶輸入的賬號密碼是否正確,正確就彈出歡迎詞

 1 # 提示輸入用戶名和密碼
 2 
 3   
 4 
 5 # 驗證用戶名和密碼
 6 
 7 #     如果錯誤,則輸出用戶名或密碼錯誤
 8 
 9 #     如果成功,則輸出 歡迎,XXX!
10 
11  
12 
13  
14 
15 #!/usr/bin/env python
16 
17 # -*- coding: encoding -*-
18  
19 
20 import getpass
21 
22   
23 
24 name = raw_input('請輸入用戶名:')
25 
26 pwd = getpass.getpass('請輸入密碼:')
27 
28   
29 
30 if name == "alex" and pwd == "cmd":
31 
32     print("歡迎,alex!")
33 
34 else:
35 
36     print("用戶名和密碼錯誤")
View Code

場景二:在程式里設定好你的年齡,然後啟動程式讓用戶猜測,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,如果錯誤,提示是猜大了還是小了

1 guess_age = int(input("guessage:"))
2     if guess_age == my_age:
3         print("yes,you got it!")
4         break
5     elif guess_age > my_age:
6         print("guess smaller...")
7     else:
8         print("guess bigger!")
View Code

 

七、while迴圈

 通過while迴圈優化猜年齡的程式,程式設置猜3次,不對就退出,註意迴圈中對else的使用:

 1 my_age = 34
 2 count = 0
 3 while count < 3:
 4     guess_age = int(input("guessage:"))
 5     if guess_age == my_age:
 6         print("yes,you got it!")
 7         break
 8     elif guess_age > my_age:
 9         print("guess smaller...")
10     else:
11         print("guess bigger!")
12     count += 1
13 else:#註意這裡,針對while迴圈可以使用else語句,讓程式更簡單精煉
14     print("too many times,byebye!")
View Code

 

八、for迴圈

 使用for迴圈,實現while相同的效果,也使用了else語句:

 1 my_age = 34
 2 for i in range(3):
 3     guess_age = int(input("guessage:"))
 4     if guess_age == my_age:
 5         print("yes,you got it!")
 6         break
 7     elif guess_age > my_age:
 8         print("guess smaller...")
 9     else:
10         print("guess bigger!")
11 else:
12     print("too many times,byebye!")
View Code

最終,再次優化,實現用戶可以根據自己的需要,一直猜下去:

 1 my_age = 34
 2 count =0
 3 while count <3:
 4     guess_age = int(input("guessage:"))
 5     if guess_age == my_age:
 6         print("yes,you got it!")
 7         break
 8     elif guess_age > my_age:
 9         print("guess smaller...")
10     else:
11         print("guess bigger!")
12     count +=1
13     if count ==3:
14         continue_confime = input("try again?")
15         if continue_confime != "n":
16             count = 0
View Code

 

註意迴圈中break和continue的區別:

break是跳出當前這層迴圈的整個迴圈

1 for i in range(4):
2     print("-----------",i)
3     for j in range(4):
4         print("&&&&&&",j)
5         if j <2:
6             print("***",j)
7         else:
8             break

執行效果:

----------- 0
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
----------- 1
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
----------- 2
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
----------- 3
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2

 

continue是跳出當次迴圈

1 for i in range(4):
2     print("-----------",i)
3     for j in range(4):
4         print("&&&&&&",j)
5         if j <2:
6             print("***",j)
7         else:
8             continue

執行結果:
----------- 0
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3
----------- 1
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3
----------- 2
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3
----------- 3
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3

 

 

 

 


 

 


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

-Advertisement-
Play Games
更多相關文章
  • 提高逼格,給自己的網站加入智能聊天功能 引言 現在突然發現有很多 QQ 群都開啟了群機器人的功能,其中有兩個角色,他們分別是:Baby Q 和 QQ 小冰。在 Q 群中,你可以對他們進行任意程度的調戲,不過,遺憾的是魚和熊掌不可得兼,一個群只能進行二選一。據說 Baby Q 來自圖靈公司,而小冰卻是 ...
  • 背水一戰 Windows 10 之 控制項(集合類 - ItemsControl): 基礎知識, 數據綁定, 項模板選擇器 ...
  • ZKEACMS Core 是基於 .net core 開發的,可以在 windows, linux, mac 上跨平臺運行,接下來我們來看看如何在 CentOS 上使用Jexus托管運行 ZKEACMS,通常我們在Linux部署ASP.NET Core應用,按照微軟的官方文檔,我們通常需要Nginx... ...
  • 本人建立了個人技術、工作經驗的分享微信號,計劃後續公眾號同步更新分享,比在此更多具體。歡迎有興趣的同學一起加入相互學習。基於上篇微服務架構分享,今天分享其中一個重要的基礎組件“API網關”。 一、引言 隨著互聯網的快速發展,當前以步入移動互聯、物聯網時代。用戶訪問系統入口也變得多種方式,由原來單一的 ...
  • 在導入之前都需要將上傳的文件保存到伺服器,所以避免重覆的寫這些代碼,先貼出上傳文件並保存到伺服器指定路徑的代碼。 protected void btnImport_Click(object sender, EventArgs e) { Random random = new Random(); Im ...
  • ImageNet http://www.image-net.org ,圖像標註信息資料庫。每年舉辦大規模視覺識別挑戰賽(ILSVRC)。基於ImageNet資料庫構建完成目標自動檢測分類任務系統。2012年,SuperVision提交卷積神經網路(CNN)。 CNN可用於任意類型數據張量(各分量與相 ...
  • Java基礎六 一、javadoc 1.1 用法 用法: javadoc [options] [packagenames] [sourcefiles] [@files] 1.2 實例 1.3 註意 要想文檔化,必須是公共類(public) 二、classpath classpath變數的一個引用 三 ...
  • @echo off::port為需要去綁定埠set port=8888for /f "tokens=5 delims= " %%a in ('netstat -ano ^|findstr /c "%port%"') do ( echo pid=%%ataskkill /f /pid %%aGOTO ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...