Python程序基本组成
1.Python中的注释
单行注释 使用#
多行注释使用三个单引号或者三个双引号
''' 注释内容 ''' 或 """ 注释内容 """
2.Python中的输出
print输出:
print语法形式 :print 表达式1,表达式2,表达式3,……,表达式n;使用“+”连接;可以使用反引号转译`
(注意:print 在对字符串使用 +号时是连接,在对数值使用+号时是加号执行的是加法运算)
输入: num1 = raw_input("请输入数字1:") num2 = raw_input("请输入数字2:") result = int(num1)+int(num2) intNum1 = int(num1) intNum2 = int(num2) print "字符串连接是:",num1+num2 print "数值连接是:",intNum1+intNum2 输出: 请输入数字1:3 请输入数字2:4 字符串连接是: 34 数值连接是: 7
## 直接都是字符串 str1 = '罚抄' str2 = '3' str3 = '遍' print str1+str2+str3 str1 = '罚抄' str2 = 3 str3 = '遍' ##使用反引号转义 print str1+`str2`+str3 ##使用string方法进行数据类型转换 print str1+str(str2)+str3
格式化输出:print “提示字符 格式化 提示话” 常用的 %s %d %f ;占位符宽度可以指定;
print "%[-][number][.number][s,d,f]"%("variable")
示例如下:
#1.字符串占位符 %s print "His name is %s"%"jack" #2.整数占位符 %d print "He is %d years old"%20 #3.浮点占位符 %f print "His weight is %f kg"%180.2 print "His weight is %.3f kg"%180.2 #4.指定占位符宽度 通过%[-左对齐][数值指定宽度]s print "Name:%10s Age:%8d Height:%8.2f"%("jack",25,183) #使用左对齐 “-”打印格式统一好看 # print "%[-][number][.number][s,d,f]"%("variable") print "Name:%-10s Age:%-8d Height:%-8.2f"%("jackoqdfa",25,183) print "Name:%-10s Age:%-8d Height:%-8.2f"%("jacsafk",25,183) print "Name:%-10s Age:%-8d Height:%-8.2f"%("jasdddsack",25,183) print "Name:%-10s Age:%-8d Height:%-8.2f"%("zxck",25,183)
输出内容:
His name is jack He is 20 years old His weight is 180.200000 kg His weight is 180.200 kg Name: jack Age: 25 Height: 183.00 Name:jackoqdfa Age:25 Height:183.00 Name:jacsafk Age:25 Height:183.00 Name:jasdddsack Age:25 Height:183.00 Name:zxck Age:25 Height:183.00
print3打印必须是带括号print()
format():让格式输出更清晰
print "{0} is {1} years old".format("jack",20)
print "{1} is {0} years old".format(20,"jack")
输出:
jack is 20 years old
jack is 20 years old
输入:
boy = ["jack",20]
girl = ["Miki",18]
print "{0[0]} is {0[1]} years old,{1[0]} is {1[1]} years old ".format(boy,girl)
输出:
jack is 20 years old,Miki is 18 years old
进阶设置占位符大小和居中:
#设置格式化,把三个变量指定宽度
"{:20}\t{:28}\t{:32}".format("asdfa","asdf","sds")
#设置格式化,把三个变量指定宽度,并设置为居中
"{:^20}\t{:^28}\t{:^32}".format("asdfa","asdf","sds")
3.Python中的输入
raw_input()输入使用:
*得到的是字符串
input():读取一个合法的python表达式:只进行数学计算时可以使用。否者用raw_input();
num3 = input("10+5:")
print(type(num3))
print(num3)
输出:
10+5:10+5
<type 'int'>
15
在Python3中input()接收字符串类型了;所以一般用raw_input();
4.Python容器数据类型
List,Tuple,Dictionary,Set
四个;
1.列表–List []
列表可以存储多个不同类型的数据
列表创建:一个简单创建,一个通过list(xxx)来进行创建,对字符串创建非常有效;
list1 = ['h','e','l','l','o'] print list1 list2 = list('hello') print list2
列表访问:1.使用index访问:
list[index]
list[0]
更新列表:
list.append(xxx)
只能追加一个对象list1.append(5)
删除列表:
del list[index]
删除某一个;del list[index1:index2]
删除一个区间【index1~index2】的数据;del list
删除整个list列表,在内存中释放;del list[:]
清空整个list数据
del list4[:] #清空列表内容 或者 del list4[0:len(list4)] print list4 输出:[]
列表脚本操作符
len([1,2,3])
[1,2,3]+[4,5,6]
输出:[1,2,3,4,5,6]
['Hi!']*4
对string类型也可以 :'hello'*4
;'2'*4
分别输出: ['Hi!', 'Hi!', 'Hi!', 'Hi!'] hellohellohellohello 2222
3 in [1,2,3]
输出bool:True
多维数据读取:
list[0][0]
list[[1,2,3],[4,5],[6,[7,8]],[9]] print list[2][1][1]
列表索引,切片
list[-2:]
2.元组–Tuple ()
与列表类似,元组的元素不能修改; 变量名 = ();只有一个值的元组要有一个逗号
创建元组:
tup1 = (1,2,'abc') #直接括起来 tup2 = 'a','b','c',1 #不用括号直接创建元组 极端时可以是 a = "a", 这个后面有个逗号也是元组 #通过tuple() 函数把某种数据转换为元组 tup3 = tuple('hello') tup4 = tuple([1,2,3]) tup5 = tuple((4,5,6))
访问元组:
- 使用下表访问某一个元素
tup1[index]
;使用切片方式访问一个区间元素tup1[index1:index2]
- 格式化输出用到的也是元组:
print "小张今年%d岁,是个耿直%s"%(20,'boy')
- 使用下表访问某一个元素
修改元组:元组内容不可以修改,但是可以元组组合
tup1+tup2
;连接操作;删除元组:元组中的元素不允许删除,但可以用del语句删除整个元组;
del tup1 print tup1 输出:NameError: name 'tup1' is not defined
元组运算符:
迭代:
存在中文乱码问题及其解决python2:
tup1 = ('duan','jin','张三','李四',1,2) print tup1 #输出会出现转码问题 输出: ('duan', 'jin', '\xe5\xbc\xa0\xe4\xb8\x89', '\xe6\x9d\x8e\xe5\x9b\x9b', 1, 2) #解决办法 #1.通过json自带方法 import json print json.dumps(tup1).decode("unicode-escape") 输出: ["duan", "jin", "张三", "李四", 1, 2]
连接:+
(1, 2, 3) + (4, 5, 6) ---> (1, 2, 3, 4, 5, 6)
len()
3 in (1, 2, 3)
判断是否存在一个元素
元组的索引,截取
tuple[:2],tuple[-3:],tuple[:-1]
3.字典–Dictionary {}
字典形式:{key:value,key1:value1}
键是唯一必须的,值则不必;键可以值字符串,数值,元组;值是任意类型
创建字典
字典无序读取效率高。list是顺序读取,数据量多的时候读取效率低
# 1.建立一个空字典,再赋值 dict1 = {} dict1['age'] = 20 #和列表赋值写法一样 都是方括号写;不可以通过dict1{'age'} 这个是不合法的 print dict1 # 2.键值对直接创建 person = {'name':'qiwsir','language':'python','name':'yuwen'} person['name2'] = 'qiwsir2' print person #顺序发现随机 # 3.通过dict()把元组变为字典 tup1 = (['name1','baidu'],['name2','google']) # 元组必须是键值对形式 website = dict(tup1) print website # 4. dict4 = ('name'='value',''='') # 5. fromkeys() 方式 dict5 = {}.fromkeys(('first','seconde'),'facebook')
读取操作:
dict1['name']
更改操作:
dict1['name'] = 'new_value'
删除操作:del 注意:访问清空过得,不存在的元素会报错
del dict1['name'] # 删除一个元素 dict1.clear() # 清空操作 del dict1 # 删除字典本身
4.集合–Set
一个无序且不重复的元素集合。
1.创建集合
# 1.字符串变为集合
set1 = set('hello')
# 2.列表变为集合
list1 = [1, 2, 3, 4]
set2 = set(list1)
# 3.字典变为集合 ;set3里面变成了他的key值
dict1 = {'n1': 1, 'n2': '2', 'n3': [3, 4]}
set3 = set(dict1)
# 4.直接写
set4 = {'k1', 'k2', 'k3'}
2.集合操作:主要是集合的交并补集等
# 比较:
se = {11, 22, 33}
be = {22, 55}
temp1 = se.difference(be) # 找出se中存在,be中不存在的数据
temp2 = se.difference_update(be) #找到se中存在,be中不存在的集合,覆盖掉se
tem1 = se.intersection(be) # 取交集
se.intersection_update(be) # 取交集并更新自己
# t
se.isdisjoint(be) # 是否存在交集
se.issubset(be) # 是不是子集
se.issuperset(be) # 是不是父集
se.symmetric_difference_update(be) # 合并不同项
se.update(be) # 合并原值,覆盖
3.集合删除:discard() ,remove(),pop()
discard() 移除不存在元素不会报错; remove() 移除不存在元素会报错;pop()移除末尾元素并返回
set3 = set({31, 32, 33})
set3.discard(11)
set3.discard(44)
set4 = set({41, 42, 43})
set4.remove(41)
set4.remove(44) # 移除不存在会报错
set5 = set({51, 52, 53})
temp3 = set5.pop()
5.Python中的运算符
1.算术运算符:
+ - * / % ** //
2.比较运算符:
==
!=
>
<
>=
<=
3.赋值运算符
=
+=
-=
*=
/=
4.逻辑运算符
and x and y # 数字不为零就是true
or x or y
not not x
5.位运算符
按位运算符是把数字看作二进制来进行计算的。
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与 | |
| | 按位或 | |
^ | 按位异或 | |
~ | 按位取反 | |
<< | 左移动 | |
>> | 右移动 |
实例:
a = 60 #60 = 0011 1100
b = 13 #13 = 0000 1101
c = a & b#12 = 0000 1100
进制转换:
bin() # 十进制转二进制
oct() # 十进制转八进制
hex() # 十进制转十六进制
6.成员运算符: in,not in
为了获取bool
值运行
7.身份运算符: is, is not
身份运算符用于比较两个对象的存储单元,id()
函数用于获取对象内存地址。
a is b
判断相当于 id(a) == id(b)
总结:运算符优先级
指数>按位运算>算术>逻辑>and 等等
8.时间和日期
time 和datetime