python初識day1

  python初識day1

  本節內容:php

  • 格式化輸入輸出——Hello World.
  • 表達式if...else 條件語句.
  • 表達式for 循環.
  • 表達式while循環 and continue.
  •  break跳出循環.

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++進行程序的擴展。
View Code

4.簡述解釋型和編譯型編程語言?

解釋型語言編寫的程序不須要編譯,在執行的時候,專門有一個解釋器可以將VB語言翻譯成機器語言,每一個語句都是執行的時候才翻譯。這樣解釋型語言每執行一次就要翻譯一次,效率比較低。


用編譯型語言寫的程序執行以前,須要一個專門的編譯過程,經過編譯系統,把源高級程序編譯成爲機器語言文件,翻譯只作了一次,運行時不須要翻譯,因此編譯型語言的程序執行效率高,但也不能一律而論,

部分解釋型語言的解釋器經過在運行時動態優化代碼,甚至可以使解釋型語言的性能超過編譯型語言。
View Code

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 ... 
View Code

 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的方式。
View Code

官網文檔: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
View Code

 

10.請編寫一個函數實現將IP地址轉換成一個整數。

因爲第9個給了進制間的轉換的代碼這裏就只給下思路,有興趣的小夥伴本身寫一下吧!
首先須要將四個段分開轉化成二進制,而後分別和"00000000"相或運算之後,就能夠獲得想要的二進制數了。而後拼接起來就ok了。
相關文章
相關標籤/搜索