Day_10_Weekend_Homework_Answer
''''''
import random
''' 简答题 '''
# 1, Python中的循环有几种:
# for-in, while
# 2, Python的数据类型有哪些:
# int,float,str, bool, list, tuple, None, dict, set, bytes
# 3, Python中空类型特殊值是:
# None
# 4, 判断下列赋值方式正确与否(True or False)
'''
x = y = z = 1 => True
x=1, y=2 => False
x, *y, z = 1,2,3,4 => True
x, y, z = (1,2,3) => True
'''
x, *y, z = 1,2,3,4
a,b,*c = (1,2,3,4,5)
print(a, b, c) # 1 2 [3, 4, 5]
# 5, 列举至少5种常用的内置函数,并解释函数的作用:
# print, sum, min, max, abs
# 6,判断下面变量名不正确的有哪些:
# ABC, aBC, a-bc, a_bc, _num123, 123num, NUM123, num_123,
# True, false, true1, false0, print, id, __id__, python
# => a-bc, 123num, True
# 7,列举列表list中的至少6个函数,且说明每个函数对应的作用
# append, insert, extend, clear, pop, remove, sort, reverse, copy, index,
# 8,列举字典dict中的至少3个函数,且说明每个函数对应的作用
# get, pop(key), update, clear, keys, values, items, copy
''' 编程题 '''
# 1, 将列表中元素去重, 使用至少2种方式
# 方式一:
l = [1,1,11,2,2,23,3,4,5,6,6,6,4,4,5,]
print(list(set(l)))
# 方式二:
l = [1,1,11,2,2,23,3,4,5,6,6,6,4,4,5,]
l2 = []
for n in l:
if n not in l2:
l2.append(n)
l = l2
print(l)
# 2、编写一个函数gcd(x,y) 求最大公约数,编写一个函数lcm(x,y)求最小公倍数。
# 最大公约数
def gcd(x, y):
for n in range(min(x,y), 0, -1):
if x%n==0 and y%n==0:
return n
print(gcd(12, 8))
# 最小公倍数
def lcm(x, y):
return x*y / gcd(x,y)
print(lcm(6, 8))
# 3、使用Python编程实现下面图形打印:
'''
*
**
***
****
*****
'''
n = 5
for i in range(n):
for j in range(n-i-1):
print(' ', end='')
for k in range(i+1):
print('*', end='')
print()
for i in range(1, 6):
# print(' '*(5-i) + '*'*(i))
print(('*'*(i)).rjust(5))
# 4、使用Python编程实现下面图形打印:
'''
*
***
*****
*******
*********
'''
n = 5
for i in range(n):
for j in range(n-i-1):
print(' ', end='')
for k in range(2*i+1):
print('*', end='')
print()
n = 10
for i in range(1, n+1):
print(('*'*(2*i-1)).center(2*n-1))
# 5,将字典的key和value置换,
# 如使用字典: d1 = {'a':1,'b':2,'c':3},
# 置换后生成字典: d2 = {1:'a', 2:'b', 3:'c'}
d1 = {'a':1,'b':2,'c':3}
d2 = {v:k for k,v in d1.items()}
# 6、使用Python写一个按照下面方式调用都能正常工作的 my_sum() 方法
'''
print(my_sum(2,3)) 输出 5
print(my_sum(2)(3)) 输出 5
'''
def my_sum(*args):
if len(args) >= 2:
return sum(args)
else:
def inner(n):
return n + args[0]
return inner
print(my_sum(2,3))
print(my_sum(2)(3))
def fn(*args):
s = 1
for i in args:
s *= i
return s
colors = '0123456789ABCDEF'
def random_color():
s = '#'
for i in range(6):
s += random.choice(colors)
return s
print(random_color())
def create_persons():
persons = []
names = ["张三","李四","王五","赵六","钱七"]
for i in range(5):
name = names[i]
age = random.randint(10, 100)
face_value = random.randint(0, 100)
d = {}
d['name'] = name
d['age'] = age
d['face_value'] = face_value
persons.append(d)
return persons
def get_old(persons):
old_age = max(persons, key=lambda d:d['age'])
print(old_age)
old_list = [d for d in persons if d['age']==old_age['age']]
print(old_list)
def sort_facevalue(persons):
persons.sort(key=lambda d:d['face_value'])
print(persons)
persons = create_persons()
print(persons)
get_old(persons)
sort_facevalue(persons)