递归,字典和键笔记
有一对兔子一个月之后每个月生一对兔子 n年后会有多少对兔子(斐波那契数列)
def fun(n):
if n == 1 or n==2:
return 1
else:
return fun(n-1)+fun(n-2)
x = int(input('请输入经过了多少月'))
y = fun(x)
print('%d月共有%d对兔子'%(x,y))
汉诺塔递归:
def hanoi(n,x,y,z):
if n == 1:
print(x,'-->',z)
else:
#将n-1个盘子借助z从x移动到y
hanoi(n-1,x,z,y)
#将x最底下的盘子从x移动到z
print(x,'-->',z)
#将y上的n-1个盘子借助x移动到z
hanoi(n-1,y,x,z)
n = int(input('请输入汉诺塔的层数'))
hanoi(n,'x','y','z')
字典和键
1.字典
dict1={'字符串':'字符串',......}
print(dict1['字符串'])
dict2 = {1:'one',2:'two',3:'three'}
dict2
{1:'one',2:'two',3:'three'}
dict2[2]
'two'
dict3 = dict((('f',70),('i',105),('s',115),('h',104),('c',67)))
dict3
{'f':70,'i':105,'s':115,'h':104,'c':67}
dict4 = dict(字符串1='字符串2',字符串3='字符串4')
dict4
{'字符串3':字符串4,'字符串1':字符串2}
------->字典功能可以类比linux的vi 没有则会创建
2.键
>>> dict1 = {}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict2 = {}
>>> dict2 = dict2.fromkeys(range(6),'hi')
>>> dict 2
{0: 'hi', 1: 'hi', 2: 'hi', 3: 'hi', 4: 'hi', 5: 'hi'}
keys values items
for eachKey in dict2.keys():
print(eachKey)
0
1
2
3
4
5
for eachValue in dict2.values():
print(eachValue)
hi
hi
hi
hi
hi
hi
for eachItem in dict2.items():
print(eachItem)
(0, 'hi')
(1, 'hi')
(2, 'hi')
(3, 'hi')
(4, 'hi')
(5, 'hi')
-----查询是否在字典中-----
>>> 5 in dict2
True
>>> 7 in dict2
False
----清空字典-----
dict2.clear()
-----字典拷贝----
dict3 = dict2.copy()
--------从字典中弹出一个数------
>>> dict2
{0: 'hi', 1: 'hi', 2: 'hi', 3: 'hi', 4: 'hi', 5: 'hi'}
>>> dict2.pop(2) ----->指定弹出哪个位置的数
'hi'
>>> dict2.popitem() ------>随机弹出一个位置的数
(5, 'hi')
>>>
------在字典的一个随机位置加入一个对应的值----
>>> dict2
{0: 'hi', 1: 'hi', 3: 'hi', 4: 'hi'}
>>> dict2.setdefault(9,'hello')
'hello'
>>> dict2
{0: 'hi', 1: 'hi', 3: 'hi', 4: 'hi', 9: 'hello'}
>>>
-------在字典中通过映射更新一个数据的值------
>>> dict2
{0: 'hi', 1: 'hi', 3: 'hi', 4: 'hi', 9: 'hello'}
>>> dict3 = {'9':'hi'}
>>> dict2.update(dict3)
>>> dict2
{0: 'hi', 1: 'hi', 3: 'hi', 4: 'hi', 9: 'hello', '9': 'hi'}
>>>
---------------------集合-------------------
集合中没有重复的元素
#如何创建集合
1.直接用花括号把一堆元素括起来
2.用set()函数
set1 = set([1,2,3,4,5,5])
#将列表中重复元素删除
1.直接在列表中进行追加
num1=[1,2,3,4,5,5,3,1,0]
temp = []
for each in num1:
if each not in temp:
temp.append(each)#如果each在temp中没有 则对temp进行追加
2.集合的方法
num1 = list(set(num1))
num2 = frozenset([1,2,3,4,5]) #不可变集合