一、基本语法

1.行和缩进

Python中,不使用括号来表示代码的类和函数定义块或流程控制。

代码块是由行缩进,缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量。

如下所示:

a = 100

if a >=0:print(a)else:print(-a)

// 同样的,建议一个tab设置成4个空格(Editor->Code Sytle)

2.注释

“#”号之后字符和到物理行是注释的一部分,Python解释器会忽略它们。

多行注释,使用三引号 """ """(单引号亦可)

#First comment

print "Hello, Python!"; #second comment

3.引号

Python接受单引号('),双引号(“)和三(''或”“”)引用,以表示字符串常量,只要是同一类型的引号开始和结束的字符串。

三重引号可以用于跨越多个行的字符串。例如,所有下列是合法的:

word = 'word'sentence= "This is a sentence."paragraph= """This is a paragraph. It is

made up of multiple lines and sentences."""

4.分号

和scala一样,分号是可选的。一般而言可以省略

二、数据类型

a) 数字

b) 字符串

c) 列表

d) 元组

e) 字典

f) set

补充还有布尔值:True和False

python中定义变量时不需要显示指定变量类型,如果要查看数据类型,可以使用type(var),以下为python中变量使用的典型语法:

#基本使用(连scala中的val都省了,全自动类型推断)

counter = 100 #整型

miles = 1000.0 #浮点

name = "John" #字符串

三、字符串和编码

1.字符串

在python3中,默认的字符串编码是Unicode,提供了类似

ord()——字符的整数表示(例如A:65)

decode()/encode()——字符串与bytes之间的互转

len()——表示字符串长度等常规方法

取值支持str[1],str[1:8]这样的区间取值,直接取出某些字符串中的指定位字符。步长也是支持的str[0:5:2]——切片

同样,字符串支持for in的迭代!

字符串格式化与C保持一致:

print("your name is %s,you are %s" % ("Bob", "Good"))

2.编码

通常在py文件的头加上以下两行:来防止乱码

#!/usr/bin/env python3#-*- coding: utf-8 -*-

第一行和shell一样,告诉liunx系列系统这是一个可执行程序

第二行则用于指定编码(当然文件也要指定编码,这部分在pycharm中也应该设定编码)

3.占位符

>>> print('it is %s,i %s it' %('good','like'))

itis good,i like it

和C的占位符类似,不再赘述;相同功能的有format方法:

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)'Hello, 小明, 成绩提升了 17.1%'

四、list列表和tuple元组

1.List列表

与普通列表list的定义一样是个可变有序列表,注意python的写法:中括号[]

>>> list = ['i','love','chnia']>>>list

['i', 'love', 'chnia']

访问使用从0开始的下标访问,并且支持正负访问:

>>>list[0]'i'

>>> list[1]'love'

>>> list[-1]'chnia'

元素的增删改操作:完整的操作在文档第五章

#末尾插入元素

>>> list.append('you')>>>list

['i', 'love', 'chnia', 'you']#指定位置插入元素

>>> list.insert(1,'really')>>>list

['i', 'really', 'love', 'chnia', 'you']#删除末尾元素

>>>list.pop()'you'

>>>list

['i', 'really', 'love', 'chnia']#删除指定位置元素,remove删除指定元素,clear清空列表

>>> list.pop(1)'really'

>>>list

['i', 'love', 'chnia']>>>

list保存的还可以是不同类型的元素:

>>> list = [1,'love',True]>>>list

[1, 'love', True]>>>

list的遍历:

#!/usr/bin/env python#-*- coding: utf-8 -*-

if __name__ == '__main__':

list= ['html', 'js', 'css', 'python']#方法1

print '遍历列表方法1:'

for i inlist:print ("序号:%s 值:%s" % (list.index(i) + 1, i))print '\n遍历列表方法2:'

#方法2

for i inrange(len(list)):print ("序号:%s 值:%s" % (i + 1, list[i]))#方法3

print '\n遍历列表方法3:'

for i, val inenumerate(list):print ("序号:%s 值:%s" % (i + 1, val))#方法3

print '\n遍历列表方法3 (设置遍历开始初始位置,只改变了起始序号):'

for i, val in enumerate(list, 2):print ("序号:%s 值:%s" % (i + 1, val))

2.tuple元组

tuple就是不可变的list了,表示上使用括号()

>>> tuple = ('i','love',10086)>>>tuple

('i', 'love', 10086)

隐式使用tuple可以进行多重赋值:

a,b = 1,2

# 利用隐式tuple可以简便的交换两个元素的值

x,y = y,x

这里为了避免歧义,定义一个元素的元组时,需要在末尾加逗号,,Python在显示只有一个元素的时候也会加上逗号

>>> tuple1 = (1,)

访问和list一样,使用下标:

>>> tuple[1]'love'

>>>

五、条件判断与循环

1.条件判断

直接从示例看起:注意冒号

age = 20

if age >= 18:print('your age is', age)print('adult')

根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。

结合else的语法如下:(注意else后的冒号:)

age = 3

if age >= 18:print('adult')elif age >= 6:print('teenager')else:print('kid')

python也支持:

ifx:print('True')

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。

2.循环

for

和scala有点儿类似(当然,Python先于scala出现),同样注意冒号:

>>> list = [1,'love',True]>>> for e inlist:print(e)1love

True

同样,python提供类似scala的to函数的range用于控制循环:

range是左闭右开的;如果需要控制起始与步长,可以使用range(初始值,结束值,步长)

sum =0for x in range(101):

sum= sum +xprint(sum)

需要使用下标时可以通过相关函数使用:

list1 = ['i', 'love', 'china']for i, e inenumerate(list1):print(i, e)
while
sum =0
n= 99
while n >0:
sum= sum +n
n= n - 2
print(sum)

break和continue同样支持,但是这样会造成程序的分支混乱,慎用!

循环的else可以在循环正常结束时执行!

list1 = ['i', 'love', 'china']for i, e inenumerate(list1):print(i, e)else:print("正常执行完成")

六、dict和set

1.dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map

定义的方式是使用冒号分割,大括号包围:

>>> d = {'M': 80,'F': 90}>>>d

{'M': 80, 'F': 90}

# 下标风格的取值,key不存在时为赋值

>>> d['M']

80

使用dict也可以定义:

d1 = dict(a=99, b=98)

类似scala的getOrElse方法进行取值:

>>> d.get('Thomas') # 返回空,None>>> d.get('Thomas', -1)-1

需要注意的是由于需要计算key的hash来确定位置,所以key必须是不可变对象,例如整型、字符串

删除键值对:

Python语法借鉴了 python 语法_python

是否存在key:

'a' in d1

遍历keys values可以使用keys() values()等

2.set

和其他语言的set类似的定义,但是注意语法,需要给出一个list作出输入来产生一个set

>>> s = set(['i',1,'love'])>>>s

{'i', 'love', 1}

可以通过add(key),remove(key)进行key的增删

由python这类语言的for可以知道,可以使用for进行遍历:for e in s