学习理解一个新的语言,除了其语法、书写规范需要了解之外,也可以从其对象、列表数组、map、方法、类等角度先去了解其基本元素的写法,然后从简入繁,慢慢的不断练习、不断已解决问题的思路深入了解。在此,总结归纳一下Python这些基本的用法。
重点说明一下:
- 作用域的控制
python用缩进的方法替代了其他很多编程语言中的{}(控制代码作用域)。你也可以选择1/2/3...个空格或者按一下tab键,但必须整个文件中都统一起来。千万不可以tab和空格混用,不然就会出现各种莫名其妙的错误。所以建议都直接用4个空格。很多IDE会自动格式化空格。
- 语句结束
不像java一样,每一句后面用‘;’来表示此条语句结束,python中每一行默认是一条语句。
a = True
if a:
print('a的逻辑为真')
print('我可以在这里做一些逻辑为真的时候的操作')
else:
print('a的逻辑为假')
基本类型
变量对象
写代码的时候,我们肯定要用到一些基本对象变量比如整数、带小数点的数、字符串(比如汉字、英文字母等)等,和其他语言一样(如java),Python也会有一些基本的类型:
a = 1 # 定义整数
b = 1.1 # 定义浮点型数值
c = True # 定义boolean类型
d = False # 定义boolean类型
e = 'hello world' # 定义字符串
f = "hello world" # 定义字符串
Python和java不一样,在定义的时候不需要声明对象的类型,解释器会根据值自动判别对象的类型,同时一个变量名字也可以改变不同的类型,如下:
a = 1 # 定义整数
a = 1.1 # 定义浮点型数值
a = True # 定义boolean类型
a = False # 定义boolean类型
a = 'hello world' # 定义字符串
a = "hello world" # 定义字符串
a最后的值为hello world
。
变量的命名(上面的a、b、c、d等)是需要有一定规范的:
- 第一个字符必须是字母或者下划线“_”
- 剩下的部分可以是字母、下划线“_”或数字(0-9)
- 变量名称是对大小写敏感的,a和A不是同一个变量。
数组(list)
除了一个个单独的变量之外,有的时候会用到一堆变量,比如保存1到100的所有整数、通话记录等,这个时候就用到数组了。
- 数组的定义
a = [1, 2, 3, 4, 5, 6]##数组中可以存放同一种类型的值
b = [1, 'hello world', True, 1.1]#数组中页可以存放不同的类型
c = range(0,10)#返回一个从0到9的数组(range是python的基本方法)
print(a)
print(b)
输入结果:
[1, 2, 3, 4, 5, 6]
[1, 'hello world', True, 1.1]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- 数组的操作
a = [1, 2, 3, 4, 5, 6, 6] ##数组中可以存放同一种类型的值(可重复)
for item in a: # 遍历
print(item) # 挨个输出 1 2 3 4 5 6 6
b = a[0] # 取对应位置值
print (b) # 1
a.index(2) # 取第二个位置的值
a.__len__() # 数组a的长度
a.__contains__(1) # 数组a是否包含值:1 返回结果:True
c = a[-1] # 取最后一个值
print (c) # 6
d = a[1:3] # 从第1到第3个(不包括,下标从0开始,下同) [2, 3]
d = a[:3] # 从第0个到第3个 [1, 2, 3]
d = a[:] # 全部取出 [1, 2, 3, 4, 5, 6, 6]
d = a[3:] # 从第3个位置到最后 [4, 5, 6, 6]
d = a[3:-2] # 从第三个到倒数第二个[4, 5]
d = a[3:-6] # 结果为 []
a.count(1) # 包含1的个数
a.append(7) # 添加元素
print(a) # [1, 2, 3, 4, 5, 6, 6, 7]
a.remove(3) # 移除指定元素
print(a) # [1, 2, 4, 5, 6, 6, 7]
a.pop(0) # 移除指定位置的元素(计算下标从0开始)
print(a) # [2, 4, 5, 6, 6, 7]
元组
上面说的数组列表是可以修改、删除的,Python中还有一种和数组一样的数据结构,但是其定义之后不可以再修改,这就是元组。
a=(1,2,3) # 除了增删之外,其他方法和list一样
字典
字典举个很简单的例子就是统计学生的得分情况:robby=80,Monek=98,Joy=60,这种一个名字对应这个名字的信息。其中名字叫做键,信息叫做值。字典就是这些键值对的组合。
- 定义
a = {'zhangsan': 100, "lisi": 89, "wangwu": 98}
print(a) # {'zhangsan': 100, "lisi": 89, "wangwu": 98}
a = {100: 100, 200: 89, 300: 98}
print(a) # {100: 100, 200: 89, 300: 98}
a = {100: 100, 100: 89, 100: 98}
print(a) # {100:98}
字典有以下几点注意的:
1.键必须是唯一的;
2.键只能是简单对象,比如字符串、整数、浮点数、bool值(比如list不能作为键,但是可以作为值)。
- 操作
a = {'zhangsan': 100, "lisi": 89, "wangwu": 98}
a['zhangsan'] # 取出key为'zhangsan'的值 100
a.get('zhangsan') # 取出key为'zhangsan'的值 100
del a['lisi'] # 删除key为'lisi'的值
a.pop('wangwu') # 删除key为'wangwu'的值
a['zhangsan'] = 99 # 改变key为'zhangsan'的值
a['laosan'] = 88 # 新增一个key为'laosan',value为88的
for key in a:
print a[key] # 遍历a中的元素
a.keys() # 返回a中的所有key的列表
a.has_key('zhangsan') # 判断是否包含key为'zhangsan'的值
a.clear() # 清空map a
逻辑判断
写程序的时候会用到很多逻辑的判断,比如是否满足、循环、等等,和其他语言一样,Python中也有if else、while、for循环等。
逻辑真与假
在逻辑判断中其根本都是建立在逻辑的真(True)与假(False)中,而真与假也会涉及到一些比较运算符和逻辑运算符号(比较运算符和逻辑运算符的结果都是 bool 类型的值),如下:
- 比较运算符
>:大于(不含冒号,下同)
<:小于
>=:大于等于
<=:小于等于
==:等于。比较两个值是否相等。是两个等号,这样为了和变量赋值区分开来。
!=:不等与
- 逻辑运算符
not:逻辑“非”。如果x为True,则not x为False
and:逻辑“与”。如果x为True,且y为True,则x and y为True
or:逻辑“或”。如果x、y中至少有一个为True,则x or y为True
a = True # True
a = 1 > 3 # False
a = 1 < 3 # True
a = not 0 # True 0、""、''、{}、[] 都认为是False
a = not 1 # False
a = 1 and 2 # True
a = 0 and 2 # False
a = 1 > 3 or 3 < 4 # False
a = 1 < 3 or 3 < 4 # True
if elif else
if else 根据字面意思理解,程序会顺序执行遇到if语句的时候,会去判断它所带条件的真假。
“如果”为True,就会去执行接下来的内容。“如果”为False,就跳过去执行esle的语句。书写语法规范:
if 条件:
选择执行的语句
else :
选择执行的语句
特别说明:条件后面的冒号不能少,同样必须是英文字符。
- if else
a = True
if a:
print('a的逻辑为真')
print('我可以在这里做一些逻辑为真的时候的操作')
else:
print('a的逻辑为假')
- If elif else
a = False
b = True
if a:
print('a的逻辑为真')
print('我可以在这里做一些逻辑为真的时候的操作')
elif b:
print('a的逻辑为假,b的逻辑为真')
else:
print('a、b的逻辑为假')
其中,else非必要
a = False
b = True
if a:
print('a的逻辑为真')
print('我可以在这里做一些逻辑为真的时候的操作')
elif b:
print('a的逻辑为假,b的逻辑为真')
或者:
if a:
print('a的逻辑为真')
for循环
for循环可以迭代操作一些事情,比如迭代输出一个数组list的元素、计算从1到100的和等。
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for item in a:
print(item) # 迭代输出a中的所有值
a = range(1, 101)
result = 0
for item in a:
result += item # 计算从1到100的和 x+=y运算符表示x、y相加后再把结果赋值给x
while
while是用来控制循环语句的,就好比男女朋友生气时,男孩不来哄女孩,女孩就会一直不理男孩一样,
while 男孩没哄女孩:
女孩一直不理男孩
a = True # 代表两个人吵架,而男孩还没有哄女孩
b = 0 # 吵架过去了多少时间
while a:
print('现在他还没有哄我,不搭理他')
b += 1
if b > 10: # 过了10分钟,男孩知错了,去哄女孩子了
a = False
print('两人和好了')
break、continue、return
在循环逻辑中,有这么一种情况,执行到某一步的时候,需要不再继续往下执行,这个时候就需要用到break语句了,比如上面的那个循环语句可以改为:
a = True # 代表两个人吵架,而男孩还没有哄女孩
b = 0 # 吵架过去了多少时间
while a:
b += 1
if b > 10: # 过了10分钟,男孩知错了,去哄女孩子了
break # 道完歉之后,两人和好了
print('现在他还没有哄我,打他一下') # 每过一分钟不来哄的话就打他一下
print('两人和好了')
如果只是暂时不往下执行,下一个循环的时候还需要执行的话,就可以用到continue语句,比如上面的情景,每隔五分钟,女孩需要中场休息。
a = True # 代表两个人吵架,而男孩还没有哄女孩
b = 0 # 吵架过去了多少时间
while a:
b += 1
if b > 11: # 过了10分钟,男孩知错了,去哄女孩子了
break # 道完歉之后,两人和好了
if b % 5 == 0:
continue # 每隔五分钟,中场休息,不会执行打一下的语句
print('现在他还没有哄我,打他了%d下' % b) # 每过一分钟不来哄的话就打他一下
print('两人和好了')
现在他还没有哄我,打他了1下
现在他还没有哄我,打他了2下
现在他还没有哄我,打他了3下
现在他还没有哄我,打他了4下
现在他还没有哄我,打他了6下
现在他还没有哄我,打他了7下
现在他还没有哄我,打他了8下
现在他还没有哄我,打他了9下
现在他还没有哄我,打他了11下
两人和好了
类型转换
上面说了基本类型的定义,而基本类型之间是可以相互转化的。
int(x) #把x转换成整数
float(x) #把x转换成浮点数
str(x) #把x转换成字符串
bool(x) #把x转换成bool值
a = 'hello ' + 'zhangsan' # a值为:hello zhangsan
a = 'hello ' + 100 # 报错,在python中字符串和数值不能相加
a = 'hello ' + str(100) # str可以
b = '1'
c = 1 + int(b) # 2
c = 1 + float(b) # 2.0
bool(1) # true
对字符串的格式化还有一种方式,使用%的方式:
%d 整数
%f 浮点型(%.2f 保留两位小数)
%s 字符串
具体用法如下:
a = '张三得分:%d' % 100
print(a) # 张三得分:100
b = 99
a = '张三得分:%d' % b
print(a) # 张三得分:99
b = 99.5
a = '张三得分:%f' % b
print(a) # 张三得分:99.500000
a = '张三得分:%.2f' % b
print(a) # 张三得分:99.50
str = '英文:100,语文:89'
a = '张三得分:%s' % str
print(a) # 张三得分:英文:100,语文:89
a = '张三得分:语文:%d,英语:%d' % (100, 88)
print(a) # 张三得分:语文:100,英语:88
a = '%s得分:语文:%d,英语:%d' % ('刘老四', 100, 88)
print(a) # 刘老四得分:语文:100,英语:88