有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

  • 78
    点赞
  • 340
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值