本節內容:php
1、格式化輸入輸出——Hello World. java
1.輸出python
print('Hello World') print("Hello World")#雙引號和單引號是同樣用的 在某些狀況下只能用雙引號 例如: print("let's go!") #句子中帶有單引號時 外面就不能在用單引號擴起來
2.用戶輸入程序員
name = input("what's your name?\n") print(name)
2、表達式if...else條件語句
age = 20 guess = input('Please guess my age:') if guess == age: #必須加冒號 好幾回錯都是由於冒號 print("You're great!")#若是知足條件 執行這條語句 else: print('you guessed wrong') #反之執行這條語句
python不一樣於其餘語言,python對Tab(四個空格)要求特別嚴格,像C/C++中一個條件的執行內容能夠用{ }括起來,但python裏沒有這樣的用法因此,if的執行內容必須要比if多一個Tab位。
3、for循環
用循環輸出0~9:面試
for i in range(10): print('loop:', i)
輸出結果:數據庫
loop: 0 loop: 1 loop: 2 loop: 3 loop: 4 loop: 5 loop: 6 loop: 7 loop: 8 loop: 9
仍是原來要求,不過不輸出6:編程
num=6 for i in range(10): if i != num: print('loop:',i)
輸出結果:windows
loop 0 loop 1 loop 2 loop 3 loop 4 loop 5 loop 7 loop 8 loop 9
4、表達式while循環 and continue數組
count = 0 while True:#這是一個死循環 若是不遇到break會一直執行下去 count +=1 print(count)
continue做用:不進行本次循環內continue底下的部分,直接跳到循環初始位置繼續循環。安全
count = 0 while count < 30:#whlie後跟的是條件 若是不遇到break且條件成立則會一直執行下去 count +=1 if 15 <= count <= 19: continue #遇到continue不會輸出值 由於輸出語句在continue底下 print(count)
5、break跳出循環
例:
count = 0 while True:#whlie後跟的是條件 若是不遇到break且條件成立則會一直執行下去 count +=1 if 15 <= count <= 19: continue #遇到continue不會輸出值 由於輸出語句在continue底下 if count == 50 :# 若是count == 50 改成 15~19之間的數呢? break print(count)
面試題小總結:
1.爲何學習Python
python是全能語言,社區龐大,有太多的庫和框架。你只須要找到合適的工具來實現想法,省去了造輪子的精力。
coder能夠寫儘量少的代碼來實現同等的功能。「人生苦短,我用python」是至理名言。
若是實現一箇中等業務複雜度的項目,在相同的時間要求內,用java實現要4-5個碼農的話,用python實現也許只須要1個。這就是python最大的優點了。
2.經過什麼途徑學習的Python?
自學,看視頻,看博客。
3.Python和Java、PHP、C、C#、C++等其餘語言的對比?
python語言,是一種面向對象、直譯式計算機程序設計語言,Python語法簡潔而清晰,具備豐富和強大的類庫。它常被暱稱爲膠水語言,它可以很輕鬆的把用其餘語言製做的各類模塊(尤爲是C/C++)輕鬆地聯結在一塊兒。常見的一種應用情形是,使用python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫。 Python是徹底面向對象的語言。函數、模塊、數字、字符串都是對象。而且徹底支持繼承、重載、派生、多繼承,有益於加強源代碼的複用性。Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。Python自己被設計爲可擴充的。並不是全部的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員可以輕鬆地使用C語言、C++、Cython來編寫擴充模塊。Python編譯器自己也能夠被集成到其它須要腳本語言的程序內。所以,不少人還把Python做爲一種「膠水語言」(glue language)使用。使用Python將其餘語言編寫的程序進行集成和封裝 C語言,它既有高級語言的特色,又具備彙編語言的特色,它是結構式語言。C語言應用指針:能夠直接進行靠近硬件的操做,可是C的指針操做不作保護,也給它帶來了不少不安全的因素。C++在這方面作了改進,在保留了指針操做的同時又加強了安全性,受到了一些用戶的支持,可是,因爲這些改進增長語言的複雜度,也爲另外一部分所詬病。Java則吸收了C++的教訓,取消了指針操做,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其自己解釋在虛擬機中運行,運行效率低於C++/C。通常而言,C,C++,java被視爲同一系的語言,它們長期佔據着程序使用榜的前三名。 C語言的優勢:簡潔緊湊、靈活方便;運算符豐富;數據類型豐富;表達方式靈活實用;容許直接訪問物理地址,對硬件進行操做;生成目標代碼質量高,程序執行效率高;可移植性好;表達力強; C語言的缺點:C語言的缺點主要表如今數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。 C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數組下標越界不做檢查等。從應用的角度,C語言比其餘高級語言較難掌握。也就是說,對用C語言的人,要求對程序設計更熟練一些。 C#語言,C#是微軟公司發佈的一種面向對象的、運行於.NET Framework之上的高級程序設計語言。C#看起來與Java有着驚人的類似;它包括了諸如單一繼承、接口、與Java幾乎一樣的語法和編譯成中間代碼再運行的過程。可是C#與Java有着明顯的不一樣,它借鑑了Delphi的一個特色,與COM(組件對象模型)是直接集成的,並且它是微軟公司 .NET windows網絡框架的主角。首先,C# 和JAVA同樣,簡直就是照搬了C++的部分語法,所以,對於數量衆多的C++程序員學習起來很容易上手,另外,對於新手來講,比C++要簡單一些。其次,Windows是佔壟斷地位的平臺,而開發Windows應用,固然微軟的聲音是不能忽略的。最重要的是,相對於C++,用C# 開發應用軟件能夠大大縮短開發週期,同時能夠利用原來除用戶界面代碼以外的C++代碼。 Java語言,Java是一種能夠撰寫跨平臺應用軟件的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具備卓越的通用性、高效性、平臺移植性和安全性,普遍應用於我的PC、數據中心、遊戲控制檯、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社羣。在全球雲計算和移動互聯網的產業環境下,Java更具有了顯著優點和廣闊前景。 Java的優點,與傳統程序不一樣,Sun 公司在推出 Java 之際就將其做爲一種開放的技術。全球數以萬計的 Java 開發公司被要求所設計的 Java軟件必須相互兼容。「Java 語言靠羣體的力量而非公司的力量」是Sun公司的口號之一,並得到了廣大軟件開發商的認同。這與微軟公司所倡導的注重精英和封閉式的模式徹底不一樣。Sun 公司對 Java 編程語言的解釋是:Java 編程語言是個簡單、面向對象、分佈式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和動態的語言。 php語言,PHP(PHP: Hypertext Preprocessor的縮寫,中文名:「PHP:超文本預處理器」)是一種通用開源腳本語言。語法吸取了C語言、Java和Perl的特色,入門門檻較低,易於學習,使用普遍,主要適用於Web開發領域。 特性:PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法;PHP能夠比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其餘的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比徹底生成htmL標記的CGI要高許多,PHP具備很是強大的功能,全部的CGI的功能PHP都能實現; PHP支持幾乎全部流行的數據庫以及操做系統;最重要的是PHP能夠用C、C++進行程序的擴展。
4.簡述解釋型和編譯型編程語言?
解釋型語言編寫的程序不須要編譯,在執行的時候,專門有一個解釋器可以將VB語言翻譯成機器語言,每一個語句都是執行的時候才翻譯。這樣解釋型語言每執行一次就要翻譯一次,效率比較低。
用編譯型語言寫的程序執行以前,須要一個專門的編譯過程,經過編譯系統,把源高級程序編譯成爲機器語言文件,翻譯只作了一次,運行時不須要翻譯,因此編譯型語言的程序執行效率高,但也不能一律而論,
部分解釋型語言的解釋器經過在運行時動態優化代碼,甚至可以使解釋型語言的性能超過編譯型語言。
ps:轉自:https://blog.csdn.net/zhu_xun/article/details/16921413
5.Python解釋器種類以及特色?
1、Cpython(最經常使用的版本) Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。 2、Jyhton Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。 3、IronPython Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似) 4、PyPy(特殊) Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。 5、RubyPython、Brython ...
6.位和字節的關係?
1字節=8位 即:1B=8byte
7.b、B、KB、MB、GB 的關係?
1GB=2^10MB 1MB=2^10KB 1KB=2^10B 1B=8b
8.請至少列舉5個 PEP8 規範(越多越好)。
一 代碼編排 1 縮進。4個空格的縮進(編輯器均可以完成此功能),不使用Tap,更不能混合使用Tap和空格。 2 每行最大長度79,換行可使用反斜槓,最好使用圓括號。換行點要在操做符的後邊敲回車。 3 類和top-level函數定義之間空兩行;類中的方法定義之間空一行;函數內邏輯無關段落之間空一行;其餘地方儘可能不要再空行。 二 文檔編排 1 模塊內容的順序:模塊說明和docstring—import—globals&constants—其餘定義。其中import部分,又按標準、三方和本身編寫順序依次排放,之間空一行。 2 不要在一句import中多個庫,好比import os, sys不推薦。 3 若是採用from XX import XX引用庫,能夠省略‘module.’,都是可能出現命名衝突,這時就要採用import XX。 三 空格的使用 整體原則,避免沒必要要的空格。 1 各類右括號前不要加空格。 2 逗號、冒號、分號前不要加空格。 3 函數的左括號前不要加空格。如Func(1)。 4 序列的左括號前不要加空格。如list[2]。 5 操做符左右各加一個空格,不要爲了對齊增長空格。 6 函數默認參數使用的賦值符左右省略空格。 7 不要將多句語句寫在同一行,儘管使用‘;’容許。 8 if/for/while語句中,即便執行語句只有一句,也必須另起一行。 四 註釋 整體原則,錯誤的註釋不如沒有註釋。因此當一段代碼發生變化時,第一件事就是要修改註釋! 註釋必須使用英文,最好是完整的句子,首字母大寫,句後要有結束符,結束符後跟兩個空格,開始下一句。若是是短語,能夠省略結束符。 1 塊註釋,在一段代碼前增長的註釋。在‘#’後加一空格。段落之間以只有‘#’的行間隔。好比: # Description : Module config. # # Input : None # # Output : None 2 行註釋,在一句代碼後加註釋。好比:x = x + 1 # Increment x 可是這種方式儘可能少使用。 3 避免無謂的註釋。 五 文檔描述 1 爲全部的共有模塊、函數、類、方法寫docstrings;非共有的沒有必要,可是能夠寫註釋(在def的下一行)。 2 若是docstring要換行,參考以下例子,詳見PEP 257 """Return a foobang Optional plotz says to frobnicate the bizbaz first. """ 六 命名規範 整體原則,新編代碼必須按下面命名風格進行,現有庫的編碼儘可能保持風格。 1 儘可能單獨使用小寫字母‘l’,大寫字母‘O’等容易混淆的字母。 2 模塊命名儘可能短小,使用所有小寫的方式,可使用下劃線。 3 包命名儘可能短小,使用所有小寫的方式,不可使用下劃線。 4 類的命名使用CapWords的方式,模塊內部使用的類採用_CapWords的方式。 5 異常命名使用CapWords+Error後綴的方式。 6 全局變量儘可能只在模塊內有效,相似C語言中的static。實現方法有兩種,一是__all__機制;二是前綴一個下劃線。 7 函數命名使用所有小寫的方式,可使用下劃線。 8 常量命名使用所有大寫的方式,可使用下劃線。 9 類的屬性(方法和變量)命名使用所有小寫的方式,可使用下劃線。 9 類的屬性有3種做用域public、non-public和subclass API,能夠理解成C++中的public、private、protected,non-public屬性前,前綴一條下劃線。 11 類的屬性若與關鍵字名字衝突,後綴一下劃線,儘可能不要使用縮略等其餘方式。 12 爲避免與子類屬性命名衝突,在類的一些屬性前,前綴兩條下劃線。好比:類Foo中聲明__a,訪問時,只能經過Foo._Foo__a,避免歧義。若是子類也叫Foo,那就無能爲力了。 13 類的方法第一個參數必須是self,而靜態方法第一個參數必須是cls。 七 編碼建議 1 編碼中考慮到其餘python實現的效率等問題,好比運算符‘+’在CPython(Python)中效率很高,都是Jython中卻很是低,因此應該採用.join()的方式。 2 儘量使用‘is’‘is not’取代‘==’,好比if x is not None 要優於if x。 3 使用基於類的異常,每一個模塊或包都有本身的異常類,此異常類繼承自Exception。 4 異常中不要使用裸露的except,except後跟具體的exceptions。 5 異常中try的代碼儘量少。好比: try: value = collection[key] except KeyError: return key_not_found(key) else: return handle_value(value) 要優於 try: # Too broad! return handle_value(collection[key]) except KeyError: # Will also catch KeyError raised by handle_value() return key_not_found(key) 6 使用startswith() and endswith()代替切片進行序列前綴或後綴的檢查。好比: Yes: if foo.startswith('bar'):優於 No: if foo[:3] == 'bar': 7 使用isinstance()比較對象的類型。好比 Yes: if isinstance(obj, int): 優於 No: if type(obj) is type(1): 8 判斷序列空或不空,有以下規則 Yes: if not seq: if seq: 優於 No: if len(seq) if not len(seq) 9 字符串不要以空格收尾。 10 二進制數據判斷使用 if boolvalue的方式。
官網文檔:https://www.python.org/dev/peps/pep-0008/
9.經過代碼實現如下進制轉換:
二進制轉換成十進制:v = 「0b1111011」
十進制轉換成二進制:v = 18
八進制轉換成十進制:v = 「011」
十進制轉換成八進制:v = 30
十六進制轉換成十進制:v = 「0x12」
十進制轉換成十六進制:v = 87
def two_to_ten(n): x = int(n, 2) print(x) two_to_ten("101100") #輸出:44 #bin()、oct()、hex()的返回值均爲字符串,且分別帶有0b、0o、0x前綴。 def two_to_eight(n): x = oct(int(n, 2)) print(x) two_to_eight("101100") #輸出:0o54 def sixteen_to_eight(n): x = oct(int(n, 16)) print(x) sixteen_to_eight("A7C9") #輸出:0o123711
10.請編寫一個函數實現將IP地址轉換成一個整數。
因爲第9個給了進制間的轉換的代碼這裏就只給下思路,有興趣的小夥伴本身寫一下吧! 首先須要將四個段分開轉化成二進制,而後分別和"00000000"相或運算之後,就能夠獲得想要的二進制數了。而後拼接起來就ok了。