000绪论
001我和python的第一次亲密接触
002
idle
print('------我爱鱼c工作室--------')
temp = input("不妨猜一下小甲鱼现在心里想的是那个数字:")
guess = int (temp)
if guess == 8;
print("我草,你是小甲鱼心里的蛔虫么?!")
print("哼,猜中了也没有奖励!")
else:
print ("猜错啦, 小甲鱼现在心里想的是8!")
print ("游戏结束,不玩啦^_^")
dir(__builtins__) #调出BIF
help(input) #input用法
作业:
00试题
0.什么是BIF
1.用课堂上甲鱼的方法数一数python一共多少个bif
2.在Python看来:‘FishC’和‘fishc’一样么
3.在小甲鱼看来python中什么是最重要的?你赞同么
4.这节课例子中出现了”=“和‘==’,他们表示不同含义,你在编程过程中会不小心把‘==’误写成‘=’么?有没有什么好的办法可以解决这个问题呢?
5,你听过拼接这个词么
01 动动手
0 0. 编写程序:hello.py,要求用户输入姓名并打印“你好,姓名!”
1. 编写程序:calc.py 要求用户输入1到100之间数字并判断,输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑”
2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
答案:
试题:
0 BIF 就是 Built-in Functions,内置函数。为了方便程序员快速编写脚本程序(脚本就是要编程速度快快快!!!),Python 提供了非常丰富的内置函数,我们只需要直接调用即可,例如 print() 的功能是“打印到屏幕”,input() 的作用是接收用户输入(注:Python3 用 input() 取代了 Python2 的 raw_input(),用法如有不懂请看视频讲解)
1 在 Python 或 IDLE 中,输入 dir(__builtins__) 可以看到 Python 提供的内置方法列表(注意,builtins 前后是两个下划线哦)其中小写的就是 BIF。如果想具体查看某个 BIF 的功能,比如 input(),可以在 shell 中输入 help(input),就会得到这个 BIF 的功能描述。哦,答案应该是 68 个,不信你自己数数看,你们肯定没有自己完成作业就来看答案!哼~ T_T
2 不一样,因为 Python 是一个“敏感的小女孩”,所以不要试图欺骗她,对 Python 来说,fishc 和 FishC 是完全不同的两个名字,所以编程的时候一定要当心。不过 Python 会帮助解决可能因此出现的问题,例如只有当标识符已经赋值后(还记得吗,小甲鱼在课堂中说过 Python 的变量是不用先声明的)才能在代码中使用,未赋值的标识符直接使用会导致运行时错误,所以你很快就可以根据经验发现此问题。
3 缩进!在小甲鱼看来,缩进是 Python 的灵魂,缩进的严格要求使得 Python 的代码显得非常精简并且有层次(小甲鱼阅读过很多大牛的代码,那个乱......C语言不是有国际乱码大赛嘛......)。
所以在 Python 里对待缩进代码要十分小心,如果没有正确地缩进,代码所做的事情可能和你的期望相去甚远(就像C语言里边括号打错了位置)。
如果在正确的位置输入冒号“:”,IDLE 会自动将下一行缩进!
4 C语言的话,如果 if( c == 1 ) 写成 if( c = 1 ),程序就完全不按程序员原本的目的去执行,但在 Python 这里,不好意思,行不通,语法错误!Python 不允许 if 条件中赋值,所以 if c = 1: 会报错!
5 在一些编程语言,我们可以将两个字符串“相加”在一起,如:'I' + 'Love' + 'FishC' 会得到 'ILoveFishC',在 Python 里,这种做法叫做拼接字符串。
动动手
0
name=input('请输入你的名字:')
print('你好,'+name+'!')
1
question = input('请输入1到100之间的数字:')
num=int(question)
if num<=100:
print('你妹妹好漂亮')
else:
print('你大爷好丑')
003 小插曲之变量和字符串
004 游戏改进
一、条件分支
猜错的时候程序提示用户当前输入打了还是小了
temp = input('猜个数:')
guess = int(temp)
if guess == 8:
print('挖草')
print('没奖励')
else:
if guess > 8:
print('大了大了')
else:
print('小了小了')
print('退出')
二、 while循环
程序应该提供多次机会给用户猜测,(程序需要重复运行某些代码)
temp = input('猜个数:')
guess = int(temp)
while guess !=8:
temp = input('哎呀,重新输入:')
guess = int(temp)
if guess == 8:
print('挖草')
print('没奖励')
else:
if guess > 8:
print('大了大了')
else:
print('小了小了')
print('退出')
改进:到达一定次数就不能继续(*使用and)
三、引入外援 (每次运行程序产生的答案都是随机的)
1、random 模块
randint(),返回随机数
import random
secret = random.randint(1,10)
guess =0
time=3
print('猜个数:',end=' ')
while (guess !=secret) and (time>0):
temp = input()
guess = int(temp)
time=time-1
if guess == secret:
print('挖草')
print('没奖励')
else:
if guess > secret:
print('大了大了')
else:
print('小了小了')
if time > 0:
print('再来一次:',end='')
else:
print('机会用光了')
print('退出')
作业
1
temp = input('请输入一个整数:')
number = int(temp)
i = 1
while number:
print(i)
i = i + 1
number = number - 1
2
temp = input('请输入一个整数:')
number = int(temp)
while number:
i = number - 1
while i:
print(' ', end = '')
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
005 python的数据类型
一、数值类型
1、整型:(整数)
2、浮点型(小数)
3、e记法(科学计数法)
4、布尔类型
二、类型转换
作业
006 运算符优先级问题
幂运算 **
正负+-
算数操作符* / // + -
比较操作符 < <= > >= == !=
逻辑运算符 not and or
007 、008了不起的分支和循环(while)
while 条件:
循环体
打飞机小游戏
加载背景音乐
播放背景音乐(设置单曲循环)
我方飞机诞生
interval = 0
while True:
if 用户是否退出游戏
退出程序
interval += 1
if interval == 50:
interval = 0
小飞机诞生
小飞机移动一个位置
屏幕刷新
if 用户鼠标移动:
我方飞机位置 = 鼠标位置
屏幕刷新
if 我方小飞机与飞机发生肢体冲突:
我方挂,播放撞击音乐
修改我方飞机图案
打印(game over)
停止音乐播放,最好淡出
008 了不起的分支和循环
三元操作符
x, y = 4, 5
if x < y:
small = x
else:
small = y
small = x if x < y else y
作业
x, y, z = 4, 5, 6
small1 = x if x < y else y
small2 = small1 if small1 < z else z
print(small2)
small = x if (x < y and x < z ) else ( y if y < z else z)
print(small)
009 了不起的分支和循环(for)
for 目标 in 表达式:
循环体
range([strat,] stop [,step=1])
break (终止当前循环)
continue
for i in range (10):
if i%2 != 0:
print(i)
continue #满足条件直接打印并且从for再来/ 不满足条件继续后面语句
i += 1
print(i)
(i为奇数打印,i为偶数+2 打印)
作业:(水仙花数)
(//取整 、%求余 、
法一、
for i in range (100,1000):
if (i//100)**3 + (i//10%10)**3 + (i%10)**3 == i:
print(i)
010 列表list一个打了激素的数组1(中括号【】)
011 列表一个打了激素的数组2
012 列表一个打了激素的数组3
以上三个没保存,第五章(1)列表 - pf42280 - 博客园 (cnblogs.com)参考此链接
013 元组 带上了枷锁的列表
元组与列表的不同
列表中的元素可以任意修改,可以任意插入或者删除一个元素, 而元组不行,元组是不可变的(像字符串一样), 所有别指望对元组进行原地排序等高级操作 #列表创建用中扩号,元组用小扩号
0 创建和访问一个元组
#用小括号扩起来
tuple1 = (1,2,3,4,5,6,7,8)
print(tuple1)
#访问方式,与列表无异
print(tuple1[1]) #结果2
print(tuple1[5:]) #结果 (6, 7, 8)
print(tuple1[:5]) #结果 (1, 2, 3, 4, 5)
#使用分片的方式来复制一个元组
tuple2 = tuple1[:] #分片方式和列表一样
print(tuple2) #结果 (1, 2, 3, 4, 5, 6, 7, 8)
元组的标志符号:逗号
temp = (1)
print(type(temp)) #type() 用于返回参数的类型
#结果 <class 'int'>
temp = 1,2,3
print(type(temp))
#结果 <class 'tuple'>
temp = ()
print(type(temp))
#结果<class 'tuple'>
#只有一个元素
temp1 = (1,)
#再次证明逗号起决定作用
a = 8*(8)
print(a) #64
b = 8*(8,)
print(b) #结果 (8, 8, 8, 8, 8, 8, 8, 8)
02 更新和删除元组
#使用链接符(+)来合并成一个新元组
temp = ('小鸡','小鸭','小猪')
temp = temp[:2] + ('小甲鱼',) + temp[2:]
print(temp)
# ('小鸡', '小鸭', '小甲鱼', '小猪')
temp = temp[:2] + temp[3:]
print(temp)
#('小鸡', '小鸭', '小猪')
删除整个元组用del
del temp
print(temp)
#NameError: name 'temp' is not defined
很少用del删除,因为python的回收机制自动删除
03 其他操作符 见上列表,一样的
014 字符串:各种奇葩的内置方法 “”
01 字符串与前面介绍的列表、元组有相似之处
1、字符串分片
#字符串分片
str1 = " I love fishc.com!"
a = str1[:6]
print(a)
#结果: I lov
2、字符穿利用索引取值
#字符串利用索引取值
str1 = " I love fishc.com!"
print(str1[5])
#结果: v
3、字符串的拼接
#字符串的拼接
str1 = " I love fishc.com!"
b = str1[:6] + '插入的字符串' + str1[6:]
print(b)
# I lov插入的字符串e fishc.com!#注意:这种拼接的方式是将变量指向了新的字符串b,旧的字符串str1还在
4、比较运算符、逻辑运算符、成员关系操作符等操作和列表元素一样,不再赘述
二、各种内置方法
python字符串的方法:https://www.cnblogs.com/hcxy2007107708/articles/10004856.html
演示常用方法
capitalize()
# capitalize() 把字符串的第一个字母大写
>>> str1='qijing'
>>> str1.capitalize()
'Qijing'
center(width)
# center(width) 将字符串剧中至长度width的新字符串
>>> str1
'qijing'
>>> str1.center(20)
' qijing '
,count(sub,star,end)
# ,count(sub,star,end) sub在[star ,end]中出现次数
>>> str2 = 'DAXIExiaoxie'
>>> str2.count('xi')
2
>>> str2.count('xi',0,8)
1
find(sub[,start[,end]])和index()
#查找sub子字符串在字符串中的位置
str1 = "L love fishc.com"
print(str1.find('fishc')) #结果 7
print(str1.find('good')) #结果 -1 #找不到会返回-1
print(str1.index('fishc')) #结果 7
print(str1.index('good')) #找不到,会抛出异常,ValueError: substring not found
join(连接字符串)
# join 是以字符串为分隔符,插入到sub字符串中的所有字符之间
>>> str1= 'qijing'
>>> str1.join('12345')
'1qijing2qijing3qijing4qijing5'
#join 是以字符串作为分隔符,插入到sub字符串中的所有字符之间
a = 'x'.join("Test")
print(a) #结果 Txexsxt
b = '_'.join('Fishc')
print(b) #结果 F_i_s_h_c
#使用join链接字符串效率比字符串拼接高
c = "I" + " " +"love" + " " +'fishc.com'
print(c) #结果 I love fishc.com
d = ' '.join(['I','love','fishc.com'])
print(d) #结果 I love fishc.com
replace(old,new[,count])
#替换指定的字符串
str1 = "l love you"
a = str1.replace("you","fishc.com")
print(a) #结果 l love fishc.com
print(str1) #还是原来的,没有变化
split(sep=None,maxsplit=-1)
#join链接字符串
str1 = " ".join(["l",'love','fishc.com'])
print(str1) #l love fishc.com
#拆分字符串
b = str1.split() #默认以空格拆分
print(b) #['l', 'love', 'fishc.com']
str2 = '_'.join("Fishc")
bb = str2.split(sep='_') #sep="X" 自定义分割符
print(bb) #['F', 'i', 's', 'h', 'c']
015 字符串: 格式化
格式化方法
format
#format() 方法接受位置参数和关键字参数,二者均传递到一个叫作replacement 字段。
#这个replacement 字段在字符串内由大扩号({})表示
#方式一、位置参数
temp = "{0} love {1}.{2}".format("I","fishc","com")
print(temp) #结果 I love fishc.com
#方式二、关键字参数
temp2 = "{a} love {b}.{c} ".format(a="I",b="fishc",c="com")
print(temp2) #结果 I love fishc.com
#综合位置参数和关键字参数,位置参数必须在关键字之前
temp3 = "{0} love {a}.{b} ".format('I',a = 'Fishc',b = "com")
print(temp3) #结果 I love fishc.com
temp4= "{a} love {b}.{0} ".format(a="I",b="fishc","com") #会报错
print(temp4)
"""
#报错
temp4= "{a} love {b}.{0} ".format(a="I",b="fishc","com")
^
SyntaxError: positional argument follows keyword argument
"""
g = "{0}:{1:.2f} ".format("圆周率",3.14159)
print(g)
#结果:圆周率:3.14
#:表示格式化符号的开始,.2表示四舍五入到保留两位小数,f 表示浮点数
格式化操作符:字符串格式化符号含义及转义字符含义:https://www.cnblogs.com/hcxy2007107708/articles/10091916.html
字符串格式化符号含义
#格式化字符
print('%c' %97) #a
#格式化整数
>>> '%d + %d = %d' %(4,5,4+5)
'4 + 5 = 9'
#格式化无符号八进制数
b = '%d转换为八进制是:%o'% (123,123) #小写的“o"字母
print(b)
#123转换为八进制是:173
#格式化浮点数字
c = "%f 用科学计数法表示为:%e" %(149500000,149500000)
print(c)
#149500000.000000 用科学计数法表示为:1.495000e+08
格式化操作符辅助命令
#格式化浮点数,指定小数点后保留一位
a = '%5.1f'% 27.658
print(a) # 27.7
#e计法
b = '%.2e'% 27.658 #保留小数点后两位
print(b) #2.77e+01
c = '%10d'% 5 #10为宽度,在5前面补9个0,总共10位
print(c)
# 5
d = '%-10d'%5 #‘-’表示结果左对齐, 宽度为10,后面补9个0
print(d)
#5 |
E = "%010d" % 5 #用0代替空格,10表示宽度为10位,不足补0
print(E)
#0000000005
F= '%#x'%100 # 小写“x",表示16进制
FF= '%#X'%100 # 大写“X",表示16进制
print(F)
print(FF)
#0X64
#0X64
H = '%d的八进制%#o'%(123,123) #'#"表示在八进制数前显示‘0o’
print(H) #123的八进制0o173
HH = '%d的十六进制%#X'%(123,123) #'#"表示在十六进制数前显示‘0X’
print(HH) #123的十六进制0X7B 大写X
Hx = '%d的十六进制%#x'%(123,123) #'#"表示在十六进制数前显示‘0x’
print(Hx) #123的十六进制0x7B 小写X
016 序列
一·、列表、元组和字符串的共同点----------统称为序列
---都可以通过索引得到每一个元素
---默认索引值总是从0开始
---可以通过分片的方法得到一个范围内的元素的集合
---有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
二、序列的内置函数BIF
1、list ()函数() (list本身作为一个方法)
*功能:把一个可迭代对象转化为列表·
*语法:list()产生一个空列表
list(iterable)把可迭代项目的内容通过索引值迭代,将其变成一个列表
迭代:重复反馈过程的活动,其目的通常事为了达到活接近所需目标或结果;每次对过程的重复称之为一次迭代;每一次迭代得到的结果都会被用作下一次迭代的初始值,可将迭代近似值看成一个FOR循环
>>> a=list()
>>> a
[]
>>> b='I Love qijng'
>>> b
'I Love qijng'
>>> b=list(b)
>>> b
['I', ' ', 'L', 'o', 'v', 'e', ' ', 'q', 'i', 'j', 'n', 'g']
>>> c = (1,1,2,3,5,8,13,21,34)
>>> c= list(c)
>>> c
[1, 1, 2, 3, 5, 8, 13, 21, 34]
2、tuple()函数
*功能:把一个可迭代对象转化为元组
*语法:tuple([iterable])
3、str()函数
*功能:把obj对象转换为字符串
*语法:str(obj)
4、len()函数
*功能:计算序列的长度并返回
*语法:len(sub)
5 、max()函数:返回序列或参数集合中的最大值,要保证序列全部参数类型事统一的
6、min()函数:返回序列或参数集合中的最小值,要保证序列参数的全部参数类型事统一的
7 、sum(interable,[,start = 0]):返回序列的interable和start的总和
*不是数字类型的数据不能使用sum函数
>>> c
[1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> sum(c)
88
>>> sum(c,10)
98
8、storted()函数,功能类似于序列的内置方法.sort(),对序列进行排序
*注意sort()函数没有返回值,不能把他赋给一个变量,如果写成b = list.stort(),得到的b是一个空
>>> d = (7,5,1,4,8,4,0)
>>> sorted(d)
[0, 1, 4, 4, 5, 7, 8]
9、 reversed()函数,功能与list.reverse()类似,直接使用reversed(interable)他会返回一个迭代器对象,我们可以用list函数将他转换成列表
>>> d = (7,5,1,4,8,4,0)
>>> reversed(d)
<reversed object at 0x0000025DA4623070>
>>> list(reversed(d))
[0, 4, 8, 4, 1, 5, 7]
10、enumerate() 枚举,生成由每个元素的index值和item值组合成的元组
>>> d = (7,5,1,4,8,4,0)
>>> enumerate(d)
<enumerate object at 0x0000025DA4A90100>
>>> list( enumerate(d))
[(0, 7), (1, 5), (2, 1), (3, 4), (4, 8), (5, 4), (6, 0)]
11、zip 返回由不同序列同一索引下的元素组成的元组
>>> a = [1,2,3,4,5,6,7,8]
>>> b = [4,5,6,7,8]
>>> zip(a,b)
<zip object at 0x0000025DA4A901C0>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]
017函数 :python的乐高积木
一 函数的基本语言
python编程语言中最重要的三大块内容:函数、对象、模块
1 函数的概念
*编程语言中对函数的定义是:函数是逻辑结构化过程化的一种编程过程
*实际应用时是把一组语句的集合通过函数名进行封装得到的代码块
*他仅在被调用时才会运行,用户在使用函数是过程中可以将数据(参数)传递到函数中,函数运行结束后可以把数据作为结果返回
2 函数的定义
*规则:
。 函数代码块以def关键词开头,后接函数标识符号名称和括号()
。 任何传入参数和自变量必须在圆括号中间,圆括号直接可以用于定义参数
。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
*语法:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
eg
>>> def Myfirst():
print('这是我创建的第一个函数')
print('我很激动!')
print('thanks')
>>> Myfirst()
这是我创建的第一个函数
我很激动!
thanks
>>>
后见:!!!!!!!!!!!!!!!!!!!!!!!!!!!!