有C/C++/Java基礎的,學習Python一篇文章就夠了

我在學校裏學習的是C、C++、C#,實習的時候公司裏用的都是Java,於是又自學了java。用我領導的一句話說,“C++轉Java幾天時間就夠了”。最近在學習深度學習算法和自然語言處理的時候,很多算法都是用python寫的,於是又下定決定學習了python。用了一下午就基本學會了,以下是菜鳥教程的鏈接。

Python2:http://www.runoob.com/python/python-tutorial.html
Python3:http://www.runoob.com/python3/python3-tutorial.html

爲什麼給兩套教程呢,有句話是這麼說的,“Java只有一種,而Python語言有兩種,2和3“。Python 3.0在設計的時候爲了不帶入過多的累贅,和Python2在一些方面有一些不同,下面也會詳細說明。

有了C++/Java基礎的學習python還是很快的,我在看教程的時候很多東西都是跳過不看的,因爲它和其他語言裏的都一樣。爲了減少看那些冗餘內容的時間,特此整理一下python和C++/Java在編碼方面不一樣的地方,方便自學python的人更快的學習。

文末有python及其IDE資源哦。


一、 基礎語法

1、縮進

python與C++/Java最大的不同就是使用縮進來表示代碼塊,而不使用大括號({})。Python中一個模塊的界限,是由這行前面有多少空格決定的,而C和Java用的是大括號{}。比如以下程序:

if True:
    #可以在同一行中使用多條語句,語句之間使用分號(;)分割。
    print ("True");print ("True")
else:
    print ("False")

那如果這行代碼比較長,一行放不下怎麼辦?我們可以使用反斜槓(\)來實現

total = item_one + \
        item_two + \
        item_three

python的空行沒有任何作用,加了也不會報錯,用適當的空行隔開模塊可以讓你的代碼層次更加清晰明瞭。

2、註釋

Python中單行註釋以 # 開頭,多行註釋使用三個單引號(”’)或三個雙引號(“”“)。例如:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

# 第一個註釋
print ("Hello, Python!")  # 第二個註釋
'''
這是多行註釋,使用單引號。
這是多行註釋,使用單引號。
'''
"""
這是多行註釋,使用雙引號。
這是多行註釋,使用雙引號。
"""

二、 數據類型

1、變量的聲明

在Python中定義變量的時候,不需要聲明其數據類型,但是必須賦值,在賦值的時候會給它分配相應的數據類型。例如:

 counter = 100 # 整型變量
 miles = 1000.0 # 浮點型變量
 name = "abcdefg" # 字符串
 print (counter)
 print (miles)
 print (name)

在 Python 中,變量就是變量,它沒有類型,我們所說的”類型”是變量所指的內存中對象的類型,變量只是對它的引用,可以用del counter刪除。
這裏插一句,Python2和Python3的print有較大不同,而且print 默認輸出是換行的。

print counter #這是Python2
print (counter) #這是Python3
#如果要實現不換行:
print counter , #Python2:在變量末尾加上逗號
print (counter,end=" ")#Python3:在變量末尾加上 end=""

2、數據類型

Python3 中有六個標準的數據類型:Number(數字)String(字符串)List(列表)Tuple(元組)Set(集合)Dictionary(字典)。
Python中沒有char,單字符也按字符串處理。
Python2沒有Set(集合)。

(1)Number

int、float、bool、complex(複數)。
在Python 3裏,只有一種整數類型 int,表示爲長整型,沒有 python2 中的 Long。
在 Python2 中是沒有布爾型的,它用數字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定義成關鍵字了,但它們的值還是 1 和 0,可以和數字相加。

(2)String:

Python中的字符串用單引號(‘)或雙引號(“)括起來,同時使用反斜槓(\)轉義特殊字符。
字符串的截取的語法格式如下:變量[頭下標,尾下標]
索引值以 0 爲開始值,-1 爲從末尾的開始位置。
加號 (+) 表示連接字符串, 星號 (*) 表示複製當前字符串,緊跟的數字爲複製的次數。實例如下:

str = 'abcdef' 
print (str) # 輸出字符串 
print (str[0:-1]) # 輸出第一個到倒數第二個的所有字符 
print (str[0]) # 輸出字符串第一個字符 
print (str[2:5]) # 輸出從第三個開始到第五個的字符 
print (str[2:]) # 輸出從第三個開始的後的所有字符 
print (str * 2) # 輸出字符串兩次 
print (str + "ghi") # 連接字符串

執行以上程序會輸出如下結果:

abcdef
abcde
a
cde
cdef
abcdefabcdef
abcdefghi

(3)List(列表)

列表是Python 中使用最頻繁的數據類型,和Java中的List比較像。
但是Python的列表中的元素可以是不同類型,比如數字,字符串甚至可以包含列表。
列表是寫在方括號([])之間、用逗號分隔開的元素列表。
和字符串一樣,列表同樣可以被索引和截取

#!/usr/bin/python3 
list = [ 'abcd', 123 , 4.56, 'efghij', 78.9 ]
tinylist = [123, 'efghij'] 
print (list) # 輸出完整列表 
print (list[0]) # 輸出列表第一個元素
print (list[1:3]) # 從第二個開始輸出到第三個元素 
print (list[2:]) # 輸出從第三個元素開始的所有元素 
print (tinylist * 2) # 輸出兩次列表 
print (list + tinylist) # 連接列表

輸出結果:

['abcd', 123, 4.56, 'efghij', 78.9]
abcd
[123, 4.56]
[4.56, 'efghij', 78.9]
[123, 'efghij', 123, 'efghij']
['abcd', 123, 4.56, 'efghij', 78.9, 123, 'efghij']

(4)元組:

元組(tuple)與列表類似,不同之處在於元組的元素不能修改。元組寫在小括號(())裏,元素之間用逗號隔開。

#!/usr/bin/python3 
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 ) 
tinytuple = (123, 'runoob') 
print (tuple) # 輸出完整元組 
print (tuple[0]) # 輸出元組的第一個元素 
print (tuple[1:3]) # 輸出從第二個元素開始到第三個元素
print (tuple[2:]) # 輸出從第三個元素開始的所有元素 
print (tinytuple * 2) # 輸出兩次元組 
print (tuple + tinytuple) # 連接元組

輸出結果:

('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')

(5)集合(set)

集合(set)是一個無序不重複元素的序列,和java裏的set一樣。
基本功能是進行成員關係測試和刪除重複元素。
可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典。

#!/usr/bin/python3 
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} 
print(student) # 輸出集合,重複的元素被自動去掉 
# 成員測試 
if('Rose' in student) : 
    print('Rose 在集合中') 
else : 
    print('Rose 不在集合中') 

# set可以進行集合運算
a = set('abracadabra') 
b = set('alacazam') 
print(a) 
print(a - b) # a和b的差集 
print(a | b) # a和b的並集 
print(a & b) # a和b的交集 
print(a ^ b) # a和b中不同時存在的元素

輸出結果:

{'Mary', 'Jim', 'Rose', 'Jack', 'Tom'}
Rose 在集合中
{'b', 'a', 'c', 'r', 'd'}
{'b', 'd', 'r'}
{'l', 'r', 'a', 'c', 'z', 'm', 'b', 'd'}
{'a', 'c'}
{'l', 'r', 'z', 'm', 'b', 'd'}

注:python2中沒有set

(6)Dictionary(字典)

Python中的字典(dictionary)相當於Java中的Map,用”{ }”創建,是一個無序的鍵(key) : 值(value)對集合。
鍵(key)必須使用不可變類型,且在同一個字典中,鍵必須是唯一的。

dict = {}
dict['one'] = "1 - ABCD"
dict['one'] = "1 - abcd" #相當於java中Map的put,可以通過賦值添加或修改字典元素
dict[2]     = "2 - efgh"

tinydict = {'name': 'Tom','age':18}

print (dict['one'])       # 輸出鍵爲 'one' 的值
print (dict[2])           # 輸出鍵爲 2 的值
print (tinydict)          # 輸出完整的字典
print (tinydict.keys())   # 輸出所有鍵
print (tinydict.values()) # 輸出所有值

輸出結果:

1 - abcd
2 - efgh
{'name': 'Tom', 'age': 18}
dict_keys(['name', 'age'])
dict_values(['Tom', 18])

(7)數據類型轉換

直接將數據類型作爲函數名即可,十分方便。如:

a=”12345”
b=int(a)
print (b)

(8)總結

數據類型 分爲數字型和非數字型。
數字型包括整型,長整型,浮點型,複數型;
非數字型包括字符串,列表,元組和字典 ;
列表用 “[ ]” 標識類似 C 語言中的數組;
元組用 “( )” 標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列表;
字典用 “{ }” 標識。字典由索引 key 和它對應的值 value 組成,相當於Java裏的Map。
非數字型的共同點:都可以使用切片、鏈接(+)、重複(*)、取值(a[])等相關運算;
非數字型的不同點:列表 可以直接賦值,元組不可以賦值,字典按照 dict[k]=v 的方式賦值。


三、運算符

1、算數運算符

Python和Java都有:
+-*/(加減乘除)%(取模)
Python新加:
**(冪)//(取整除)
注:Python2中除法(/)和java,C++中一樣,整數/整數=整數
Python3中除法(/)總是返回一個浮點數,要獲取整數使用(//)操作符

print (2/4) # 除法,得到一個浮點數(Python3) 
0.5 
print (2//4) # 除法,得到一個整數 
0

2、比較運算符

Python和Java都有:
==(等於)!=(不等於)>(大於)<(小於)>=(大於等於)<=(小於等於)
注:Python2中有<>(不等於),Python3中沒有

3、賦值運算符

Python和Java都有:
=(賦值)+=(加法賦值)-=(減法賦值)*=(乘法賦值)/=(除法賦值)%=(取模賦值)
Python新加:
**=(冪賦值)//=(取整除賦值)
Python移除:
++(自增運算符)—(自減運算符)

4、位運算符

Python和Java都有:
&(按位與)|(按位或)^(按位異或)~(按位取反)<<(左移)>>(右移)

5、邏輯運算符

Python自成一體:
and(布爾與)or(布爾或)not(布爾非)

6、成員運算符

Python自成一體:
in(如果在指定的序列中找到值返回 True,否則返回 False)
not in(如果在指定的序列中沒有找到值返回 True,否則返回 False)

7、身份運算符

Python自成一體:
is (判斷兩個標識符是不是引用自一個對象)
is not (是判斷兩個標識符是不是引用自不同對象)
注:is 用於判斷兩個變量引用對象是否爲同一個, == 用於判斷引用變量的值是否相等。

8、優先級

與Java基本相同:
[冪]>[按位取反]>[*,/,%,//]>[+ -]>[>>,<<]>[&]>[\^,|]>[<=,<,>,>=]>[<>,==,!=]>[賦值運算符]>[身份運算符]>[成員運算符]>[邏輯運算符]

未完待續…

python官網下載:https://www.python.org/
我用的編譯器是eclipse+pydev
eclipse官網下載:https://www.eclipse.org/downloads/
eclipse+pydev環境搭建教程:http://jingyan.baidu.com/article/cd4c2979101f02756f6e6064.html

發佈了22 篇原創文章 · 獲贊 64 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章