B站 马士兵Python 入门基础版 - 课程笔记

2023-11-09

视频传送门:https://www.bilibili.com/video/BV1wD4y1o7AS 记得三连

文章目录

print的规则

print可以输出的函数,数字,字符串,含有运算符的表达式,将数据输出到文件中。不进行换行输出(用逗号分开不需要换行的内容)


\t表示把print中的内容每四个字节一个\t单位,直到\t
如:print(‘hello/twolrd’) 则输出hello world 空格位有三个空格
print(‘helloooo/twolrd’) 则输出helloooo world 空格位有四个空格

\r表示回车,把后面的内容替换到前面

\b表示退一格

#原字符 不希望字符串中的转义字符起作用,就是使用原字符,就是在字符前面加上r,或者R

如print(r’hello\nworld’) 输出结果为hello\nworld

ASCLL表

Python中的保留字和标识符
保留字不能给对象命名
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

变量,函数,类和其他对象的起的名字就叫标识符
规则:
字母数字下划线_
不能以数字开头
不能是保留字
严格区分大小写

数字类型

数据类型:整数类型int、浮点型float、布尔类型boot、字符串类型 str

输出整数默认是十进制,要转换二进制前要加0b
print(‘十进制’,180)
print(‘二进制’,0b10101010)
输出结果为十进制 180
二进制 170

n1=1.1
n2=2.2
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))
#输出结果为3.3

如果没有加上decimal模块,则出现3.3000000000000003,浮点数底层问题,看情况是否要加模块

字符串分行打印使用三个单引号或三个双引号

类型转换

其他类型转换为int

a=5.88
b=True
c='hello'
d='90.2'
print(type(a),type(b),type(c),type(d))

print(int(a),type(int(a))) #float转换int,取整
print(int(b),type(int(b))) #boot转换int
print(int(c),type(int(c))) #转换失败,将str转换int类型时,字符串必须为数字串(整数),非数字串是不允许转换
print(int(d),type(int(d))) #转换失败,报错,字符串为小数串

其他类型转换为float

b='76'
c='hello world'
d=ture
print(float(b),type(float(b)))
print(float(c),type(float(c))) 错误,字符串中的数据如果是非数字串,则不允许转换
print(float(d),type(float(d)))
结果以下

76.0 <class 'float'>
1.0 <class 'float'>

Python中的注释
三种注释类型:
单行注释:#
多行注释:一对三引号
中文编码声明注释:在文件开头加上中文声明注释,用以指定源码文件的编码格式

Python中的输入函数input()

input()函数的基本使用

a=input('请输入一个整数:')
#a=int(a)
b=input('请输入另一个整数:')
#b=int(b)
print(int(a)+int(b))
#print(a+b)

Python中的运算符


print(-9//5)
print(9//-5)
结果均为-2,结论一正一负向下取整
print(9%-4) #公式 余数=被除数-除数*商  9-(-4)*3   
提示 商=被除数//除数  
结果为-3

链式赋值

a=b=c=20          #
print(a,id(a))
print(b,id(b))
print(c,id(c))

结果
20 1655989056
20 1655989056
20 1655989056

ID名为标识,内存地址
20赋值给a,即a指向20的内存地址,a根据20的内存地址找到20的值

参数赋值

a=10
a+=20 #a=a+20
print(a) 结果为30

变换变量的值

a,b,c=10,20,30
print(a,b,c)      输出结果:10,20,30

a,b=b,a
print(a,b,c)     输出结果:20,10,30

比较运算符(>,<,==,!=)

a=[11,22,33,44]
b=[11,22,33,44]
print('a等于b吗',a==b)
print(id(a))
print(id(b))
print(a is b)
print(a is not b)

结果
a等于b吗 True
1543453552968
1543453553672
False
True

and:全ture为true
or:有true为true
not:对bool类型操作数进行取反

如:a=ture
print(not a)  输出结果为false

in与not in:对字符串中是否存在指定字符进行判断

位运算符

#00010000
#00000110
#进行按位与运算,同1为1,得到00000000
print(16&6)
结果为0  

#进行按位或运算,有1为1,得到00010110
print(16|6)
结果为22

#左移位运算符<<,<<后面的二进制值向左移动一位,相当于乘于2,高位溢出,低位补零
print(16<<2)
  00010000   
0001000000
结果为64

#右移位运算符>>,>>后面的二进制值向右移动一位,相当于乘于2,高位补零,低位截断
print(16>>2)
00010000
00000100
结果为4

运算符的优先级

程序的组织结构

顺序结构,选择结构,循环结构

顺序结构:程序从上到下顺序地执行代码,中间没有任何的判断和跳转,直到程序结束

对象的布尔值

选择结构

多分支结构

嵌套if

条件表达式

if……else 条件表达式

pass语句

answer=input('你是会员吗?y/n:')
if anwser='y':
    pass
else:
    pass

r=range(1,10)
print(list(r))
输出结果:1,2,3,4,5,6,7,8,9(从一开始到九的数)
--------------------------------
r=range(1,10,2)
print(list(r)
输出结果:1,3,5,7,9
print(r in 3)
输出结果:true
print(r not in 5)
输出结果:false

循环结构

# 定义初始化变量
# 用于储存偶数和
sum=0
a=1
# 条件执行体
# 条件判断
while a<=100:
# 条件判断是否为偶数
    if a%2==0:
        sum+=a
# 改变变量
    a+=1
print('1到100之间的偶数和为:',sum)

注意缩进问题:比如if和a是while循环体里的,要进行缩进,a不在if体里的不用缩进

for-in循环

for item in 'python': #第一次取出的是P,将P赋值item,将item的值输出
	print(item)

for i in range(10):
	print(i)
输出结果为
0
1
2
3
4
5
6
7
8
9

for _ in range(5):
	print('helloworld')
输出结果
helloworld
helloworld
helloworld
helloworld
helloworld

流程控制语句break

流程控制语句continue

嵌套循环

#打印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(i,'*',j,'=',i*j,end='\t')
    print()
#行数i=1,列数j=1
#行数i=2, 列数j=3,内循环循环两次
#行数i=3, 列数j=4,内循环循环三次,以此类推
'''
结果:
1 * 1 = 1	
2 * 1 = 2	2 * 2 = 4	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25	
6 * 1 = 6	6 * 2 = 12	6 * 3 = 18	6 * 4 = 24	6 * 5 = 30	6 * 6 = 36	
7 * 1 = 7	7 * 2 = 14	7 * 3 = 21	7 * 4 = 28	7 * 5 = 35	7 * 6 = 42	7 * 7 = 49	
8 * 1 = 8	8 * 2 = 16	8 * 3 = 24	8 * 4 = 32	8 * 5 = 40	8 * 6 = 48	8 * 7 = 56	8 * 8 = 64	
9 * 1 = 9	9 * 2 = 18	9 * 3 = 27	9 * 4 = 36	9 * 5 = 45	9 * 6 = 54	9 * 7 = 63	9 * 8 = 72	9 * 9 = 81	

流程控制语句break与continue在二重循环中的使用

列表

变量可以存储一个元素,而列表可以存储N多个元素,程序可以对这些数据进行整体操作,列表相当于其他语言的数组。
列表示意图

列表的特点

创建与删除

查询操作

# 获取列表中指定元素
lst=['nihao','hello',98,99.9]
print(lst.index(98))
print(lst[1]) #中括号的数字表示索引的位置,正值从左到右,0开始表示左边第一个
            #负值从有到左,从-1开始表示右边第一个
print(lst[-2])

#输出结果:
2
hello
98

# 获取列表中的多个元素
lst=['hello','world',78,60,20]
# start=1 stop=3 step=1,切片出来的列表是一个新的列表。
print(lst[1:3:1])

列表元素的增删改查

# 增加列表中的元素
lst=['nihao','hello',98,99.9]
print('添加元素之前',lst)
lst.append(100)
print('添加元素之后',lst)

# 结果
添加元素之前 ['nihao', 'hello', 98, 99.9]
添加元素之后 ['nihao', 'hello', 98, 99.9, 100]
# 向末尾一次性添加多个元素
lst2=['world',10,100]
lst.extend(lst2)
print('使用extend参数后',lst)

# 结果
使用extend参数后 ['nihao', 'hello', 98, 99.9, 100, 'world', 10, 100]

# 在任意位置上添加一个元素
lst.insert(1,66) # 在索引1的后面添加一个
print(lst)
# 结果
['nihao', 66, 'hello', 98, 99.9, 100, 'world', 10, 100]

#切片,在列表的任意位置添加至少一个元素,切掉的部分有一个新的列表置换
lst3=[123,456,789]
lst[1:]=lst3        # 将索引1及之后的元素替换成新的元素
print(lst)

#结果:
['nihao', 123, 456, 789]

# 列元素的删除操作
lst=[10,20,30,40,50,60,70]
print('原来列表中的元素',lst)
# 从列表中移除一个元素,若重复元素只移除一个
lst.remove(10)
print('进行remove操作后',lst)
# pop()根据索引移除元素,如果不指定索引,将删除列表中最后一个元素
lst.pop(-1)
print('进行pop操作后',lst)
# 切片操作:删除至少一个元素,将产生一个新的列表对象
new_lst=lst[1:3]
print('进行切片操作后',new_lst)

# 结果:
原来列表中的元素 [10, 20, 30, 40, 50, 60, 70]
进行remove操作后 [20, 30, 40, 50, 60, 70]
进行pop操作后 [20, 30, 40, 50, 60]
进行切片操作后 [30, 40]
-------------------------------------------------
# 不产生新的列表对象,而是删除原列表中的内容
lst=[1,2,3,4,5,6,7]
lst[1:3]=[]
print(lst)

# 结果
[1, 4, 5, 6, 7]
-------------------------------------------------
# 清楚列表中的所有元素
   
# del语句将列表对象删除
del lst
print(lst)
#结果
[]
NameError: name 'lst' is not defined

lst=[10,20,30,40,50,60]
lst[20]=100 #输出结果:[10,100,30,40,50,60]
lst[1:3]=[200,300,400] #输出结果:[10,200,300,400,40,50,60]

列表元素的排序


第一种方式(原列表发生改变,ID不变)

# 列元素的排序操作
lst=[4,7,3,8,2,9,1]
lst.sort()
print('排序后的列表:',lst)  #结果:排序后的列表: [1, 2, 3, 4, 7, 8, 9]
# 通过指定关键字参数,将列表中的元素进行降序排序
lst.sort(reverse=True)  
print(lst)   #结果:[9, 8, 7, 4, 3, 2, 1]
lst.sort(reverse=False)
print(lst)  #结果:[1, 2, 3, 4, 7, 8, 9]

第二种方式,原列表不发生改变,产生新的列表(id不同)

#使用内置函数sorted()对列表进行排序,将产生一个新的列表对象
lst=[13,10,45,90,60,70]
print('原列表',lst,id(lst))

#开始排序
new_lst=sorted(lst,reverse=False)
print('升序后的列表',new_lst,id(new_lst))

#指定关键参数,实现列表元素的降序排序
desc_lst=sorted(lst,reverse=True)
print('降序后的列表',desc_lst,id(desc_lst))

#结果
原列表 [13, 10, 45, 90, 60, 70] 2339603825096
升序后的列表 [10, 13, 45, 60, 70, 90] 2339603825800
降序后的列表 [90, 70, 60, 45, 13, 10] 2339603852232

列表推导式

lst=[i*i for i in range(1,6)]
print(lst)

#结果:[1, 4, 9, 16, 25]

字典

概念

Python内置的数据结构之一,与列表一样是一个可变数列
以键值对的方式存储数据,字典是一个无序的序列

原理

字典的实现原理与查字典类似,查字典是根据首部或者拼音查找汉字对应的页码,Python中的字典是根据key查找value所在的位置

字典的创建与删除

字典的创建

# 使用{}创建字典
scores={'张三':10,'李四':20,'王五':30}
print(scores,type(scores))

# 使用dict()创建字典
student=dict(name='jack',age=10)
print(student)

# 创建空字典
d={}
print(d)

字典元素的获取

scores={'张三':10,'李四':20,'王五':30}
print(scores['张三'])
# 如果输入不存在的键,print(scores['张三']),会出现报错
print(scores.get('张三'))
# 如果输入不存在的键,print(scores.get('张三')),不会出现报错,并返回None

# 字典元素的遍历
for i in scores:
    print(i,scores[i],scores.get(i))
张三 10 10
李四 20 20
王五 30 30

scores={'张三':10,'李四':20,'王五':30}

print('张三' in scores)
print('张三' not in scores)
# 结果 ture false

del scores['张三']   #删除指定的key-value对
print(scores)
# 返回结果 {'李四': 20, '王五': 30}

scores.clear()  #清空字典的元素
#返回结果 {}

字典的查询操作

scores={'张三':10,'李四':20,'王五':30}
# 获取所有的key
keys=scores.keys()
print(keys)
print(type(keys))

# 将所有的key组成的视图转成列表
print(list(keys))

# 获取所有的value
values=scores.values()
print(values)
print(type(values))
print(list(values))

# 获取所有的key-values对
items=scores.items()
print(items)

# ('张三', 10)称之为元组,转换之后的列表元素有元组组成的
print(list(items))

# 结果
dict_keys(['张三', '李四', '王五'])
<class 'dict_keys'>
['张三', '李四', '王五']
dict_values([10, 20, 30])
<class 'dict_values'>
[10, 20, 30]
dict_items([('张三', 10), ('李四', 20), ('王五', 30)])
[('张三', 10), ('李四', 20), ('王五', 30)]

---------------------------------------------
scores={'张三':10,'李四':20,'王五':30}
for key,value in scores.items():
    print('key=%s,value=%s' %(key,value))
#结果
key=张三,value=10
key=李四,value=20
key=王五,value=30
---------------------------------------------
#使用枚举函数,同时拿到列表中的下表和元素
mylist=['a','b','c','d','e']
for num,list in enumerate(mylist):
    print(num+1,list)
#结果
1 a
2 b
3 c
4 d
5 e

字典元素的增、删、改操作

字典元素的增与改

scores={'张三':10,'李四':20,'王五':30}
scores['陈六']=100
print(scores)
scores['陈六']=90
print(scores)
# 结果 
{'张三': 10, '李四': 20, '王五': 30, '陈六': 100}
{'张三': 10, '李四': 20, '王五': 30, '陈六': 90}

字典的特点

字典生成式



可迭代的对象,指的是可以用for in循环进行遍历的对象

items=['fruit','food','other']
prices=['70','80','90']
d={ item.upper():price for item,price in zip(items,prices)}
print(d)

结果
{'FRUIT': '70', 'FOOD': '80', 'OTHER': '90'}

元组

什么是元组

元组的创建方式

t = ('hello', 'world', 98)
t2='hello','xiaoming',76    #省略小括号
t3=('world',)
t4 = tuple(('nihao','lilei',89))

# 结果
('hello', 'world', 98) <class 'tuple'>
('hello', 'xiaoming', 76) <class 'tuple'>
('world',) <class 'tuple'>
('nihao', 'lilei', 89) <class 'tuple'>

元组的遍历

# 元素的遍历
t = ('hello', 'world', 98)
print(t[0])
print(t[1])
print(t[2])
# 或者
for item in t:
    print(item)
    
#元组的新增
tup1=(11,22,33)
tup2=('hello','python')
tup=tup1+tup2
print(tup)
#结果
(11, 22, 33, 'hello', 'python')

#元组的删除
del tup1
print(tup1) #报错,删除了整个元组,无法打印

集合

什么是集合

集合的创建

集合的增删改查操作

集合元素的新增操作

# 集合的创建
t1={10,20,30,40,50}
t1.add(60)  #add一次添加一个元素
print(t1)
# t1.update({70,80,90})和t1.update((70,80,90))也可以新增元素
t1.update([70,80,90])
print(t1)

#结果
{40, 10, 50, 20, 60, 30}
{70, 40, 10, 80, 50, 20, 90, 60, 30}

集合元素的移除操作

t1.remove(10)
print(t1)
# t1.remove(100)  移除没有的元素,出现报错,而使用discard没有报错
t1.discard(20)
t1.discard(100)
print(t1)

集合间的关系

s1={10,20,30,40,50,60,70}
s2={10,20,30,}
s3={10,20,80}
s4={100,200,300}
print(s1.issubset(s2))  #s1是s2的子集吗?结果为false
print(s1.issubset(s3))  
print(s2.issubset(s1))  #s2是s1的子集吗?结果为true
print(s1.issuperset(s2))    #s1是s2的超集吗?结果为true
print(s2.isdisjoint(s3))    #s2与s3没有交集吗?结果为false
print(s2.isdisjoint(s4))    #s2与s4没有交集吗?结果为true

集合生成式

总结


字符串

字符串的驻留机制


字符串的常用操作

s='hello,hello'
print(s.index('lo'))    #3
print(s.rindex('lo'))   #9
print(s.find('lo'))     #3
print(s.rfind('lo'))    #9


大小写转换不能对元组和列表进行转换

s2='hello,world'
print(s2.center(20,'*'))
#结果:****hello,world*****

对元组和列表报错

s='hello world python'
lst=s.split()
print(lst)    #从左边开始劈分,默认是空格字符串,返回是一个列表  ['hello', 'world', 'python']

s1='hello|world|python'
print(s1.split(sep='|'))    #从左边开始劈分,以|作为劈分依据,返回个列表    ['hello', 'world', 'python']
print(s1.split(sep='|',maxsplit=1))     #从左边开始劈分,以|作为劈分依据,最大劈分次数为1,
                                            # 劈分后剩下的子串作为单独的一部分,返回个列表   ['hello', 'world|python']

print(s1.rsplit(sep='|'))
print(s1.rsplit(sep='|',maxsplit=1))        #结果:['hello|world', 'python']


注释:水平制表符为空格,\t

print('2.','李四abc'.isalpha())
print('3.','张三'.isidentifier())
print('4',' '.isspace())
print('5.','123adb'.isalnum())

print(s2.replace('world','java'))     #字符串替换replace,将world替换成java
s3='hello,python,python,python'
print(s3.replace('python','java',2))    #字符串替换replace,将Python替换成java,替换两次

s4=['hello','world','python']           #字符串组合,组合的元素必须是元组或列表
print('|'.join(s4))   #结果:hello|world|python
print(''.join(s4))    #结果:helloworldpython

print('*'.join('python'))    #结果:p*y*t*h*o*n

字符串的比较

print('python'>'pytho')         #true
print(ord('c')>ord('a'))        #true
print(ord('c'),ord('a'))        #99  97
print(chr(98))          #b

字符串的切片操作

# 字符串切片操作
s1='hello,python'
print(s1[1:5:1])  #从1开始截取到5(不包括5),步长为1
结果:ello
print(s1[::2])  #从0开始截取到最后,步长为2
结果:hlopto
print(s1[::-1])     #从0开始截取到最后,步长为-1
结果:nohtyp,olleh
print(s1[-6::1])    #索引从-6开始,到字符串最后一个元素结束,步长为1
结果:python

格式化字符串

name='张三'
age=14
money=14.3
new_str='我叫{0},今年{1}岁,身上有{2}元'.format(name,age,money)
print(new_str)
print('我叫%s,今年%i岁,身上有%.2f元' % (name,age,money))

# 结果
我叫张三,今年14岁,身上有14.3元
我叫张三,今年14岁,身上有14.30#表示字符串的宽度
print('%d' % 99)    #字符串没有宽度
print('%10d' % 99)      #10表示宽度
print('%.4f' % 3.1415296)   #.4表示小数点后三位

print('%10.3f' % 3.1415296)     #宽度+小数点后三位
#结果
99
        99
3.1415
     3.142

字符串的编码转换

s='斗破苍穹'

print(s.encode(encoding='GBK'))     #在GBK编码格式中,一个中文占两个字节
print(s.encode(encoding='UTF-8'))       #在GBK编码格式中,一个中文占三个字节

byte=s.encode(encoding='GBK')         #编码
print(byte.decode(encoding='GBK'))      #解码 

byte=s.encode(encoding='UTF-8')     #编码
print(byte.decode(encoding='UTF-8'))     #解码

#结果
b'\xb6\xb7\xc6\xc6\xb2\xd4\xf1\xb7'
b'\xe6\x96\x97\xe7\xa0\xb4\xe8\x8b\x8d\xe7\xa9\xb9'
斗破苍穹
斗破苍穹

函数

函数的创建和调用


def cale(a,b):
    c=a*b
    return c
print(cale(5,4))  #结果为20

函数的参数传递



#函数的定义
def fun(arg1,arg2):
    print('arg1=',arg1)
    print('arg2=',arg2)

    arg1=100        #重新赋值为100
    arg2.append(10) #追加100
    print('arg1=', arg1)
    print('arg2=', arg2)
    print('-------------------------------')
#函数的调用
n1=11
n2=[22,33,44]
print(n1,n2)     #结果:11 [22, 33, 44]
fun(n1,n2)      #将位置传参,agr1,arg2是函数定义的形参,n1,n2是函数调用的实参,总结:形参和实参名称可以不一致
print(n1,n2)    #结果:11 [22, 33, 44, 10]

print('===============理解函数创建===========================')
def acl(s1,s2):     #创建acl函数,s1,s2为形参
    s1=50           #函数体,将s1修改为50,s2追加90
    s2.append(90)
#对acl函数的调用
s1=5
s2=[10,20,30,40]
acl(s1,s2)      #调用
print(s1,s2)    #调用后的结果

'''在函数的调用过程中,进行参数的传递
    如果是不可变对象,在函数体的修改不会影响到实参的值 arg1的值修改为100,不会影响n1的值
    如果是可变对象,在函数体的修改会影响到实参的值 arg2的修改,append(10),会影响到n2的值
'''
#结果
11 [22, 33, 44]
arg1= 11
arg2= [22, 33, 44]
arg1= 100
arg2= [22, 33, 44, 10]
-------------------------------
11 [22, 33, 44, 10]
===============理解函数创建===========================
5 [10, 20, 30, 40, 90]

函数的返回值

def fun(num):
    odd=[]      #存奇数
    even=[]     #存偶数
    for i in num:   #遍历形参的元素
        if i%2:
            odd.append(i)   #余数为1,结果为奇数,为true,存到odd中
        else:
            even.append(i)  #余数为0,结果为偶数,为false,存到even中
    return odd,even         
lst=[10,20,33,44,47,57,60]
print(fun(lst))
#结果
([33, 47, 57], [10, 20, 44, 60])

结论
1、如果函数没有返回值,【函数执行完毕后,不需要给调用出提供数据】return可以省略不写
2、函数的返回值如果是1个,直接返回类型
3、函数的返回值如果是多个,返回结果是元组

函数的参数定义

def fun1(a=30, b=20):
 print(a, b)
fun1(100)
fun1(50, 60)
#结果
100 20
50 60

def fun1(a,b,c):
    print('a=',a)
    print('b=',b)
    print('c=',c)
fun1(10,20,30)
#将序列中的每个元素都转换为位置实参 使用*
lst1=[11,22,33]
fun1(*lst1)
fun1(a=100,b=200,c=300)
#将字典中的每个键值对都转换为关键字实参 使用**
dict={'a':111,'b':222,'c':333}
fun1(**dict)
#结果
a= 10
b= 20
c= 30
a= 11
b= 22
c= 33
a= 100
b= 200
c= 300
a= 111
b= 222
c= 333
def ext(a,b,*,c,d):   #从*之后的参数,在函数调用时,只能采取关键字参数传递
    print('a=', a)
    print('b=', b)
    print('c=', c)
    print('d=', d)
# ext(10,20,30,40)    #位置实参传递
# 要求,c,d只能采用关键字实参传递
ext(10,20,c=30,d=40)    #前两个参数,采用的是位置实参传递,而c,d采用的是关键字实参传递

# 函数定义时的形参顺序问题
def ext1(a,b,*,c,d,**args):
    pass
def ext2(*args,**args2):
    pass
def ext3(a,b=10,*args,**args2):
    pass

变量的定义域

递归函数


def fun(n):
    if n==1:
        return 1
    else:
        return n*fun(n-1)
print(fun(6))
#结果:
720

斐波那契数列

#要求将前两位的数字相加等于第三位,第一和第二数字为1
def fib(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

print(fib(6))
#结果:8

正在更新~~~~


作者:月光染衣袂
转发请加上该地址 : https://blog.csdn.net/weixin_46860149/article/details/118232264
如果笔记对您有用,请帮忙点个赞!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

B站 马士兵Python 入门基础版 - 课程笔记 的相关文章

  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • PyQt:如何通过匿名代理使用网页

    这真让我抓狂 我想在 QWebPage 中显示一个 url 但我想通过匿名代理来实现 Code setting up the proxy proxy QNetworkProxy proxy setHostName 189 75 98 199
  • Python有条件求解时滞微分方程

    我在用dde23 of pydelay包来求解延迟微分方程 我的问题 如何有条件地编写方程 例如目标方程有两个选项 when x gt 1 dx dt 0 25 x t tau 1 0 pow x t tau 10 0 0 1 x othe
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • 使用 Django Rest 保存 Base64ImageField 类型会将其保存为原始图像。如何将其转换为普通图像

    我的模型中有 5 个图像字段 imageS imageS imageS imageS 和 imageE 我正在尝试按以下方式保存图像 图像的类型Base64ImageField images imageA imageB imageC ima
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 了解 Python 中的酸洗

    我最近接到一项作业 需要以腌制形式放置一本字典 其中每个键引用一个列表 唯一的问题是我不知道腌制形式是什么 谁能给我指出一些好的资源的正确方向来帮助我学习这个概念 pickle 模块实现了一个基本但强大的算法 用于序列化和反序列化 Pyth
  • 如何在 Python 3 中循环遍历集合,同时从集合中删除项目

    这是我的情况 我有一个list set 哪个并不重要 movieplayer我想调用的对象 preload 功能开启 该预加载函数可以立即返回 但希望将来返回一点 我想存储这个电影播放器 集合 表明它们尚未预加载 然后循环它们 调用prel
  • `list()` 被认为是一个函数吗?

    list显然是内置类型 https docs python org 3 library stdtypes html list在Python中 我看到底下有一条评论this https stackoverflow com a 53645813
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • 如何将回溯/sys.exc_info() 值保存在变量中?

    我想将错误名称和回溯详细信息保存到变量中 这是我的尝试 import sys try try print x except Exception ex raise NameError except Exception er print 0 s
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • 如何在 robobrowser-python 中发出 POST 请求

    http robobrowser readthedocs org en latest api html http robobrowser readthedocs org en latest api html 我正在尝试使用 APIbrows
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 如何为所有用户安装 Anaconda python?

    Anaconda python 发行版 https store continuum io cshop anaconda 非常方便地部署科学计算环境 SCE 并根据需要切换python版本 默认情况下 安装会将 python 定位到 anac
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010

随机推荐

  • 文本意图识别方案整理

    意图识别本质上是文本分类问题 从目前的对话数据来看 用户说的话一般是短文本 长度大多在几十个字内 其中关键词和短语对分类显著的作用 目前主流的本文分类模型可以分为CNN RNN和Bert self attention 三类 三者可以结合起来
  • Python二级考试常见题型及解析(附刷题软件)

    导语 Python二级考试是计算机等级考试中非常重要的一项考试 需要熟练掌握Python的基础知识和常见的编程技巧 本文将为大家介绍Python二级考试常见的题型及解析 并提供多个实例代码进行演示 帮助大家更好地理解和掌握考试内容 一 选择
  • 三因子两水平doe_DOE试验设计案例

    DOE试验设计 一种安排实验和分析实验数据的数理统计方法 试验设计主要对试验进行合理安排 以较小的试验规模 试验次数 较短的试验周期和较低的试验成本 获得理想的试验结果以及得出科学的结论 从本质上讲 DOE 是这样一门科学 研究如何以最有效
  • 软件工程-12章

    一 判断题 程序设计语言是值编程是表现出来的特点 习惯 逻辑思维等 F 进行程序设计语言的选择是 首先考虑的是应用领域 T 好程序的一个重要标准是源程序代码的逻辑简明清晰 易读易懂 T 软件测试的目的是尽可能多地发现软件中存在的错误 将它作
  • 关于辽大信息学院选导师的一点儿心得

    首先 看到这个博文的时候 你可能已经上岸了 欢迎进入一所211综合院校 信息学院成立源远流长 涉及科类比较多 从电工电子到软件 以及生物学 学院的哲理楼也是孕育了一大批辽大优秀的学子 其他的不扯了 谈选导师的事情 首先 学院任何一位老师都有
  • 解压报错 你需要从上一压缩卷启动解压命令以便解压 解决方案及WinRAR怎么分卷压缩详解

    一 解决方案 1 问题描述 解压的时候报错 提示 你需要从上一压缩卷启动解压命令以便解压 2 解决 会出现这个问题 是因为你正在解压的文件为分卷压缩生成的压缩包 首先你要确保自己有完整的压缩包 可能对方将压缩包分为5个 那么你就需要拿到5份
  • Tensorflow2.0训练损失值降低,但测试正确率基本不变的情况

    Tensorflow2 0训练损失值降低 但测试正确率基本不变的情况 问题描述 解决方法 修改参数 检查模型 loss计算方法 数据标签 权重初始值 问题描述 对于一个架构 在识别mnist手写数字集精度较高的情况下 更换其他数据集 却无法
  • 大数据集群可视化管理界面

    hadoop hadoop http master 50070 dfshealth html tab overview hdfs http master 50070 explorer html yarn http master 8088 c
  • a deep leaning

    1 设计了新的搜索空间 即NASNet search space 并在实验中搜索得到最优的网络结构NASNet 2 提出新的正则化技术 ScheduledDropPath 是DropPath方法的改进版 可以大大提高了模型的泛化能力 Dro
  • 大学计算机基础 - 第十一章习题

    1 选择题 1 多媒体计算机中的媒体信息是指 D 文字 音频 音频 图形 动画 视频 视频 音频 A B c D 全部 2 多媒体技术的主要特性有 C 多样性 集成性 交互性 实时性 A 仅 B c D 全部 多媒体技术具有以下基本特征 1
  • 【Linux】基础IO篇

    文章目录 C文件接口 系统调用文件接口 文件描述符 是什么 分配规则 内核角度理解 从task struct的角度理解文件描述符在内核当中是什么 理解文件描述符和文件流指针的区别 重定向 符号 接口 内核角度理解重定向 重定向的代码验证 动
  • Android获取IP地址

    主要获取IP地址代码 Get Ip address 自动获取IP地址 throws SocketException public static String getIpAddress String ipType String hostIp
  • 在 Windows 上远程对 Linux 进行抓包

    文章目录 名词解释 事先准备 下载安装 Wireshark 下载运行 libpcap 设置 libpcap 环境变量 在 Wireshark 中远程连接 libpcap 笔者的运行环境 成功 本地客户端 Windows Windows 10
  • Php工具箱配置环境+DW

    Php工具箱 Wamp框架 一配置apache Web服务器软件 web php 脚本语言 mysql 1 下载phps工具箱 网址 http phpstudy php cn 安装 不装到c盘 PHP自动生成 2 Vc库安装 32位vc9和
  • 通过REST API搜获jira issue踩过的坑

    用命令行的方式使用jira的REST API需要特定权限 可以跟管理员申请权限 命令备忘 curl u username X GET H Content Type application json https jira xx com res
  • Cannot download sources Sources not found for 问题解决方案

    idea下载文件源码时报Cannot download sources Sources not found for org apache tomcat embed tomcat embed core 8 5 32 错误 解决方案 在mave
  • linux top交叉编译_ARM Linux 交叉编译 工具链 制作攻略

    ARM Linux 交叉编译 工具链 制作攻略 2007 06 25 20 04 0 制作之前确保你的机子上有如下几个工具 bison flex build essential build essential 主要是用于提供GCC GLIB
  • 利用jawin完成调用window中dll的调用

    最近由于项目的特殊需求 我们必须在程序调用window的dll 开始我们用jni 后来由于调用的dll太多 而且很烦琐 所以 我们决定用开源的jawin调用 jawin 可以对dll中的方法进行调用 也可以调用com中的方法 内部还提供了一
  • vue 全局指令实现防止按钮重复点击 防抖

    vue 全局指令实现防止按钮重复点击 防抖 指令代码 通过为按钮设置disabled属性在3秒内阻止重复点击 设置定时器在3秒后移除disabled属性 export const preventClick inserted el bindi
  • B站 马士兵Python 入门基础版 - 课程笔记

    视频传送门 https www bilibili com video BV1wD4y1o7AS 记得三连 文章目录 print的规则 数字类型 类型转换 Python中的运算符 链式赋值 参数赋值 位运算符 运算符的优先级 程序的组织结构