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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...