第一章:基础知识
IDLE集成开发环境
-
是一个REPL环境(read-eval-print-loop)交互式编程工具,python内置的IDE,通过python解释器去运行代码,一般一次运行一条语句,对于了解python语句的语法非常的方便
-
如果想输入多条语句咋办?在打开的IDLE中,新建一个文件,然后在新建的文件中输入代码,保持,按 F5 运行,就可以在IDLE中看到结果
python shell
-
变量的声明,不需要事先告知数据类型,python中的变量会根据所赋值的对象类型得到变量的数据类型(动态)
-
导入模块:
-
from 模块 import 函数
| 把指定的函数导入你的程序命名空间里面, 直接使用该函数 - import 模块 | 只导入模块,然后
模块 . 函数
使用
-
-
in 操作符 检查一个对象是否在另一个对象中
-
代码不用大括号分开,靠缩进 区分 作为一个代码块,有 :的地方,代码必须缩进
-
迭代处理一个对象序列的三种典型方法
序列是一个有序的对象集合
-
for循环 知道循环次数
# 循环数字列表,迭代变量 x 指的是被迭代对象中的item for x in [1,2,3]: print(x) # 1,2,3 # 循环字符串 for char in "icessun !": print(char) # 迭代指定次数 range() 函数 for num in range(5): print("Hi icessun!") # 输出5遍 Hi icessun!

- 查看某一个对象或者模块的属性 dir(),某一个属性的帮助文档help()

- 让程序暂停指定的秒数:
import time,random # from time import sleep 导入sleep函数,直接使用
time.sleep(random.randint(1,5)) # 随机从[1,5]中产生一个整数,睡眠秒数
-
range函数中的参数:
range [start , stop , step]
;这三个参数可以截取任意Python中的序列- start 控制范围从哪里开始,默认是从0开始
- stop 控制范围何时结束(上限值,不包含在范围内)stop值小于start的值的时候,返回一个空
-
step 可选的步长值,默认为1,可以设置为负值,来调整生成的方向(倒序)
range函数

- 三元表达式:
# 如果y>3 则x=10,否则 x=20
x=10 if y>3 else 20
# x与y值之间进行交换
x,y = y,x
案例一
# 需求:if else 语句执行 5 次 终止,每次显示消息之间暂停的随机秒数
from datetime import datetime
import time,random
odds = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59]
for i in range(5):
right_this_minute = datetime.today().minute
if right_this_minute in odds:
print("This minute seems a little odd.")
else:
print("Not an odd minute.")
time.sleep(random.randint(1,6))
案例二
# 啤酒儿歌
word = "bottles"
for beer_num in range(99,0,-1):
print(beer_num,word,"of beer on the word.")
print(beer_num,word,"of beer.")
print("take one down.")
print("pass it around.")
if beer_num == 1:
print("No more bottles of beer on the wall.")
else:
new_num = beer_num -1
if new_num == 1:
word = "bottle"
print(new_num,word,"of beer on the wall.")
print()
第二章:列表数据
程序的主要功能就是:获取数据,处理数据,理解数据;一切皆对象。
- python中的内置数据结构:列表
[ list]
,元组(truple )
,字典{dict} k-v
,集合{set}
列表 [ list ]
-
有序的,可变对象集合
-
查看列表的方法:
help(list)
-
类似于其他语言中的数组,但是列表是动态的,是异构的,可以混入其他的数据类型的值(包括列表本身),默认从 0 开始
-
空列表:
price = [ ]
-
里面的对象使用逗号隔开;
len(price)
:长度;price.append('icessun')
:列表后面追加,没有返回值 -
删除操作:
price.remove()
:传入要删除的对象值,不是索引值,没有返回值,针对你知道想要删除的对象的值。price.pop()
:传入要删除对象的索引值,返回被删除的对象;不传,默认是最后一个对象的索引值,返回最后一个对象;del list[0]
-
列表扩展:
price.extend([4,'icessun'])
:传入一个对象列表(可以传入空列表,最好是不要传入),将其追加到前一个调用列表的后面,没有返回值 -
列表插入:
price.insert(0,1)
:传入插入对象在列表中的索引位置和插入对象,没有返回值,
列表操作
-
列表复制:
price.copy()
:返回被复制对象的副本,可以用来进行其他操作,而原始列表不受到影响。如果想让一个变量引用现有列表,使用赋值操作(=) -
列表切片:
price[start:stop:step]
:其中三个值都是可选的,start没有,默认为0,可以为负值;stop没有,默认是列表允许的最大值,start值一定要绝对值大于stop值,才能获取到切片后的值,否则返回空列表;step没有,默认为1 ,改变取值的方向和跨度;返回切片的对象;列表转字符串使用' '.join(list)
;列表切片是非破坏性的,保持原对象不变;但是列表的方法会改变一个列表的状态
>>> letter="do not panic!"
>>> letters = list(letter)
>>> letters
['d', 'o', ' ', 'n', 'o', 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
>>> print(letters[0:10:3])
['d', 'n', ' ', 'n']
>>> print(letters[3:])
['n', 'o', 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
>>> print(letters[:10])
['d', 'o', ' ', 'n', 'o', 't', ' ', 'p', 'a', 'n']
>>> print(letter[::2])
d o ai!
>>> type(letter[::2])
<class 'str'>
# 数组倒序
>>> print(letter[::-1])
!cinap ton od
# 列表倒序
>>> print(letters[::-1])
['!', 'c', 'i', 'n', 'a', 'p', ' ', 't', 'o', 'n', ' ', 'o', 'd']
>>> print(letters[-10:-1:1])
['n', 'o', 't', ' ', 'p', 'a', 'n', 'i', 'c']
# start值一定要绝对值大于stop值
>>> print(letters[-1:-10:1])
[]
# 列表转字符串
>>> ''.join(letters[0:3])
'do '
- 列表循环的时候,循环变量代表列表里面元素的值
dinnersPerson = ['icessun', 'Bob', 'Ben', "alex"]
for item in dinnersPerson:
print('Hi,'+item+' 邀请您来我家共进晚餐!')
案例一
# 列表方法的使用
phrase = "Don't panic!"
plist=list(phrase) # 转为列表
print(phrase)
print(plist)
for i in range(4):
plist.pop()
plist.pop(0)
plist.remove("'")
plist.extend([plist.pop(),plist.pop()])
plist.insert(2,plist.pop(3))
new_phrase=''.join(plist)
print(plist)
print(new_phrase)
##############
Don't panic!
['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
['o', 'n', ' ', 't', 'a', 'p']
on tap
案例二
phrase = "Don't panic!"
plist=list(phrase)
print(phrase)
print(plist)
new_pharse = ''.join(plist[1:3])
new_pharse = new_pharse + ''.join([plist[5],plist[4],plist[7],plist[6]])
print(plist)
print(new_pharse)
##############
Don't panic!
['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
['o', 'n', ' ', 't', 'a', 'p']
on tap
元组 ()
- 有序的,不可变的对象集合
- 元组赋值了,就把你改变,可以认为是一个常量列表,其他与列表相似
- 有序的方法呈现数据,那么元组和列表就很合适。
字典 { }
- 无序的,可变的,键值对集合
- 其中两名的
键
是不可变类型 - 空字典:
found = { }
,往里面添加元素的时候:found['A']=0
- 字典的键必须初始化,in 操作符去检查键值是否存在,
- for in 迭代字典的时候,迭代变量就是字典中的键值
- 指定字典输出的顺序按照:字母顺序 ;
for k in sorted(found)
,但是一般都首选found.item()----->返回一个键值对列表
去迭代字典
# 接受items()返回的键值对列表
for k,v in sorted(found,items()):
print(k,'was found ',v,'times.')
案例
集合 { }
- 无序的,唯一的对象集合,避免重复
- 可以完成集合运算(并集,交集,差集)
网友评论