小甲鱼第十七课函数乐高积木课后总结反思

4. 请问这个函数有多少个参数?

1.  def MyFun((x, y), (a, b)):
2.    return x * y - a * b

回答两个是错误的,答案是零
因为(x,y)和(a,b)中的xyab是元祖的参数,而函数调用的是变量,元祖是不变的
同样如果改为这样:

def MyFun([x, y], [a, b]):
    return x * y - a * b

print(MyFun([1,2],[3,4]))

同样会报错,因此可以发现,定义函数的时候括号里面变量无限但是通常为(x,y,c,a,d,f)
而x可以为列表,在后面的编程代码可以这样写x[0],从而引用x中的值。
因此改变以后是这样:

def MyFun(x,y):
    return x[0] * x[1] - y[0] * y[1]

print(MyFun([1,2],[3,4]))

编程题
0. 编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。

def power(x,y):
    return x**y

print(power(2,3))

1. 编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。

def gcd(x,y):
    i = 1
    b = 0
    while i < 100:
       if x % i ==0 and y % i == 0:
           if i > b :
               b = i
         
       i += 1
       if i > x and i >y :
           break
               
    return b

print(gcd(52,64))

#没有注意到欧几里得算法:俩数小的数除俩数相除的余数
def gcd(x,y):
    while y:
        t = x % y
        x = y
        y = t
    return x
print(gcd(18,9))

2. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,结果与调用bin()一样返回字符串形式。

先附上我的答案:
def binbin(x):
    temp=[]
    while x:
        y = x % 2
        x = x // 2
        temp.append(y)
    temp.reverse()
    print(temp)
print(binbin(10))

我的思路:
首先算法没有大的问题,但是主要是从最后开始取答案,也就是说算法算出来其实是0101而答案是1010.然而字符串并没有内置功能可以直接翻转。因此就定义了一个空序列,加入进去以后用内置函数reverse进行翻转(注意:序列有操作符reversed,是用于从大到小排列,且需要外加list输出)。

问题出现:
1.打印结果会有一个None。究其原因是因为在def中最后print出结果,此时函数无返回值,其默认的一个返回值是None,如果这时再次print,则会出现None。解决办法有两种,第一种将最后一行改为:binbin(10),这样输出的就直接是temp的值。第二种是将print(temp)改为,return temp。
2.打印出来为列表形式,和需要的字符串形式不同,且若用str()将列表转换为字符串,逗号中括号依然会在。

借鉴答案:
新知识:1.当列表为空时相当于为0
2.return的值在开始时必须有定义(result),不然会报错

旧知识回顾:pop可以删除列表最后一位并调用,因此可以将列表进行倒叙变字符串的操作

def binbin(x):
    temp=[]
    result = ''
    while x:
        y = x % 2
        x = x // 2
        temp.append(y)
    while temp:
        result += str(temp.pop())
    return result
print(binbin(10))

总结:最后一道编程题将字符串,整型,列表知识都回忆了一次,尤其是列表,利用append加入末尾,又用pop依次取出来,达到翻转的目的。字符串本身没有翻转的内置函数,而列表虽然有,但是输出依然显得很麻烦。注意分清字符串内置函数和列表内置函数的使用

发布了17 篇原创文章 · 获赞 1 · 访问量 356

猜你喜欢

转载自blog.csdn.net/cccccccaaaaaaaaa/article/details/105294026