【鱼C·零基础入门学习python】第16课到第22课习题答案

【前言】
做了一下感觉题量很多,所以精简了我觉得还挺有意思的题目放在上面,偷了个懒提高效率,大家见谅哈。
1. 请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元祖和字符串?

答:
list([iterable]) 把可迭代对象转换为列表

tuple([iterable]) 把可迭代对象转换为元祖

str(obj) 把对象转换为字符串

只是码一波。

  1. 请问这个函数有多少个参数?
  2. def MyFun((x, y), (a, b)):
  3. return x * y - a * b
    答:答案是0,因为这种写法不合法。
    我一开始有点懵逼,觉得应该是两个,思考了一下,觉得不对。因为形参应该是个变量,而元组是只读的不是变量,所以不能用元组传递,但是元组可以作为实参。

  4. 寻找所有三位水仙花数
    答:水仙花数就是数字每一位的立方之和等于这个数字本身。

def Narcissus():
    num=0
    for each in range(100,999):
        temp=each
        sum=0
        num+=1
        while temp:
            sum+=(temp%10)**3
            temp=temp//10
        if each==sum:
            print("%d: %d" %(num,each))
  1. 写一段函数判断字符串是否为回文联
    答:判断回文联,其实就是比较字符串与其翻转过来是否一致就可以了,但是字符串貌似没有反转函数(我没看到。。。。。。如果有请提醒我),所以将其转化为list然后用reversed函数翻转后进行比较,但是注意reversed函数转换得到的结果是字符串,这个字符串的形式也不能直接与原字符串比较,故需再用list()转化后比较
def palindrome(string):
    """
   对给定字符串判断是否为回文联
    """ 
    list1=list(string)
    if string==list(reversed(list1)):
        print("yes!")
    else:
        print("nope")

str = input("please input a string")
palindrome(str)

下面在用递归的方式实现

def palindrome(string,start,end):
    """
   对给定字符串判断是否为回文联(递归方法)
    """ 
    if start>=end:
        return 1
    else:
        if string[start]==string[end]:
            return palindrome(string,start+1,end-1)
        else:
            return 0

str = input("please input a string:")
if palindrome(str,0,len(str)-1):
    print("yes")
else:
    print("nope")

与下一题相区别,注意两者返回值的而采取不同的访问方式

只看第四题
这里写图片描述

小甲鱼闭包这个例子给的很好,解释的很到位,所以就直接搬过来啦。

猜你喜欢

转载自blog.csdn.net/ytzlln/article/details/78014476