Python实战练习:打怪升级之路
1. 求一个数的幂值
def mi(a, b):
c = a
for i in range(b-1):
a = a * c
return a
print(mi(2, 4))
2. 输出斐波那契数列
def feibonaqi(n):
l = []
a = 1
b = 1
for i in range(n):
l.append(a)
l.append(b)
a = b + a
b = a + b
print(l)
feibonaqi(5)
3. 输出特定字典数据
keys = ['name', 'old', 'score']
values = [
['yee', 3, 99], ['rose', 18, 8], ['green', 30, 90]
]
要输出结果:
[{'name': 'yee', 'old': 3, 'score': 99}, {'name': 'rose', 'old': 18, 'score': 8}, {'name': 'green', 'old': 30, 'score': 90}]
正确示范:
keys = ['name', 'old', 'score'] values = [ ['yee', 3, 99], ['rose', 18, 8], ['green', 30, 90] ] l = [] for value in values: d = {} for i in range(len(keys)): d[keys[i]] = value[i] l.append(d) print(l)
错误示范:
keys = ['name', 'old', 'score'] values = [ ['yee', 3, 99], ['rose', 18, 8], ['green', 30, 90] ] l = [] d = {} for value in values: for i in range(len(keys)): d[keys[i]] = value[i] l.append(d) print(l)
错误原因:
列表追加的元素指向的是同一个字典d,若d字典的键值变化也会同步到列表
例如:
cc = [] aa = {'name': 'green', 'old': 30, 'score': 90} cc.append(aa) aa['name'] = 'yee' aa['old'] = 3 aa['score']= 99 cc.append(aa) print(cc)
输出结果是:[{‘name’: ‘yee’, ‘old’: 3, ‘score’: 99}, {‘name’: ‘yee’, ‘old’: 3, ‘score’: 99}]
4. 分批次读取文件内容,每次读取100行
def read_file():
with open('id.txt', 'r') as file:
print(type(file))
for i, j in enumerate(file, 1):
print(i, j)
if i % 100 == 0:
yield
content = read_file()
while True:
print('--------------------------------------------')
try:
content.__next__()
except StopIteration:
break
改良版:
def read_file():
with open('id.txt', 'r') as file:
mark = []
for i, j in enumerate(file, 1):
mark.append(j.strip('\n'))
if i % 100 == 0:
yield mark
mark = []
if mark == []:
yield mark
content = read_file()
for i in content:
print(i)
print('----------')
作者:caroltr