[Python基础 ] Day_10_周末作业_参考答案

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
'''
# 提示:
#   通过参数数量判断不同的情况
#   1.有1个参数, 嵌套函数
#   2.有2个参数, 返回和
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))


# 7, 封装函数,传入不定数量的数值型参数,返回所有数字的乘积,
# 提示: *args
def fn(*args):
    s = 1
    for i in args:
        s *= i
    return s

# 8, 封装一个函数random_color,该函数的返回值为随机十六进制颜色。
# 说明: 十六进制颜色#开头后面接6个十六进制数, 例: #FFFFFF, #000000, #0033CC
# 提示: colors = '0123456789ABCDEF'
#      random模块
colors = '0123456789ABCDEF'
def random_color():
    s = '#'
    for i in range(6):
        s += random.choice(colors)
    return s

print(random_color())

# 9, 封装函数,
# 第一个函数create_persons(), 创建并返回包含5个字典(例如:{"name":"xx","age":xx, "faceValue":100})的列表
#                           其中name的值:从["张三","李四","王五","赵六","钱七"]依次取
#                           其中age的值:10-100之间的随机整数
#                           其中faceValue的值:0-100之间的随机整数
# 第二个函数get_old(), 传入第一个函数创建的列表, 找出列表中年龄最大的人,并将其所有信息打印
# 第三个函数sort_facevalue(), 传入第一个函数创建的列表, 根据颜值升序排列,并打印排序后的信息

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)

猜你喜欢

转载自blog.csdn.net/weixin_44298535/article/details/107762122