# 1、有1 2 3 4 这四个数字，设计程序计算能组成多少个互不相同且无重复数字的3位数？分别是什么？（思路提示：其实就是数学排列组合，C4取3，三层for循环嵌,套可以实现）
from itertools import count


nums = []
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if i != j and i != k and j != k:
                num = i * 100 + j * 10 + k
                if num not in nums:
                    nums.append(num)
print(nums)
# 2、小明有100块钱 ，需要买100本书（钱要刚好花完），a类数5元一本，b类书3元一本，c类书0.5 元一本；请计算小明有多少种购买的方式？
li = []
for x in range(20):
    for y in range(33):
        z = 100 - y - x
        if 5 * x + 3 * y + z / 2 == 100:
            print("a类书本数：", x, "b类书本数：", y, "c类书本数：", z)
            li.append([x, y, z])
print(len(li))


# 4、定义一个可以完成任意个数字相加的函数（支持关键字传参和位置传参），并返回相加结果。

# 要求：调用函数传入1个数字，返回值为这个数字。                                       如：func(1) - --->   返回
# 1
#
# 调用函数传入2个数字，返回值为2个数相加的结果。                            如：func(11, 22) - --->   返回33
#
# 调用函数传入3个数字，返回值为3个数相加的结果。                            如：func(11, 22, 33, ) - ---> 返回66
#
# 调用函数传入n个数字，返回值为n个数相加的结果。                             如：func(1, 2, 3, 4, 5) - ---> 返回15

# （提示：可以使用不定长参数来接收参数，对参数进行遍历再相加）
def sum(*args, **kwargs):
    nums = 0
    for i in args:
        nums += i
    for i in kwargs.values():
        nums += i
    return nums


result = sum(1, 2, 3, a=2, b=3)
print(result)

# 4：简单题
# #  1、什么是全局变量？
定义在文件中的变量叫全局变量，在该文件的任何地方都可以访问
# #  2、什么是局部变量？
定义在函数内部的变量，叫局部变量, 只能在定义该变量的函数内部使用
# #  3、函数内部如何声明全局变量 ？
1）定义在文件中变量
2）函数内部使用global关键字定义的变量
# #  4、函数的形参有哪几种定义形式？
1）必传参数
2）默认传参
3）不定长传参
