2019-08-03

作业

import random
import math

1.写一个匿名函数,判断指定的年是否是闰年

func_1 = lambda years: (years % 4 == 0 or years % 100 != 0) and years % 400 == 0

print(func_1(2001))  # False
print(func_1(2000))  # True

2.写一个函数将一个指定的列表中的元素逆序

(如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)

1.用新列表保存

def reverse_order(list_1: list):
    list_2 = []
    for i in list_1[-1::-1]:

        list_2.append(i)
    return list_2


print(reverse_order([1, 2, 3]))  # [3, 2, 1]

2.不产生新列表

def reverse_order(list_1: list):
    list_2 = list_1
    for i in list_2[-1::-1]:
        list_1.remove(i)
        list_1.append(i)
    return list_1


print(reverse_order([1, 2, 3]))  # [3, 2, 1]

3.写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回)

例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3

def list_re(list_2: list, li):
    list_3 = []
    for i in range(0, len(list_2)):
        if li == list_2[i]:
            list_3.append(i)
    return list_3


print(list_re([1, 3, 4, 2, 1, 5, 2, 1], 1))  # [0, 4, 7]

4.写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的update方法)

def dict_upper(dict_1: dict, dict_2: dict):
    for key in dict_1:
        dict_2[key] = dict_1[key]  # 字典添加键值对的方式  字典[key] = 值
    return dict_2


print(dict_upper({"a": 1, "b": 2}, {"c": 3}))  # {'c': 3, 'a': 1, 'b': 2}

5.写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;

所有的大写字母转换成小写字母(不能使用字符串相关方法)

def letter_self(chars: str):
    new_str = ""
    for char in chars:
        if 'A' <= char <= 'Z':
            new_str += chr(ord(char) + 32)
        elif 'a' <= char <= 'z':
            new_str += chr(ord(char) - 32)
        else:
            new_str += char
    return new_str


print(letter_self("133dkffSDGGLS"))   # 133DKFFsdggls

6.实现一个属于自己的items方法,可以将指定的字典转换成列表。

列表中的元素是小的列表,里面是key和value (不能使用字典的items方法)

例如:{'a':1, 'b':2} 转换成 [['a', 1], ['b', 2]]

字典无序,不支持下标操作

def dict_items(dict_3: dict):
    list_d_1 = []
    # list_d_2 = []
    for key in dict_3:
        list_d_2 = []
        list_d_2.append(key)
        list_d_2.append(dict_3[key])
        # print(list_d_2)
        list_d_1.append(list_d_2)
    return list_d_1


print(dict_items({"a": 1, "b": 2}))  # [['a', 1], ['b', 2]]

7.用递归函数实现,逆序打印一个字符串的功能:

例如:reverse_str('abc') -> 打印 ‘cba’

def reverse_ord(chars):
    length = len(chars)
    if length == 1:
        print(chars)
        return
    else:
        print(chars[length-1], end="")
        chars = chars[0:(length-1)]   # 当字符串长度大于1的时候每次打印后 新的字符串是原来字符串切去最后一个字符产生的
        reverse_ord(chars)


reverse_ord("abc")

8.编写一个递归函数,求一个数的n次方

def secondary_power(number: int, n: int):

    if n == 1:
        return number
    else:
        return secondary_power(number, n-1) * number  # 括号内的number在此并无实在意义,只是参数列表有不能省略


print(secondary_power(2, 4))

9.写一个可以产生学号的生成器, 生成的时候可以自定制学号数字位的宽度和学号的开头

def id_generate(number: int, width: int, start: str):
    # new_str = ""
    # count = 0
    for n in range(1, number+1):
        str_1 = str(n)
        new_str = start + str_1.zfill((width - len(start)))
        # print(new_str)
        yield new_str


f = id_generate(3, 8, "py")
print(next(f))
print(next(f))
print(next(f))

10.编写代码模拟达的鼠的小游戏,

假设一共有5个洞口,老鼠在里面随机一个洞口;

人随机打开一个洞口,如果有老鼠,代表抓到了

如果没有,继续打地鼠;但是地鼠会跳到其他洞口

def wha_a_mole(frequency: int):   # 最多抓取次数
        count = 1
        for i in range(frequency+1):
            hole_num = random.randint(1, 5)
            mouse = random.randint(1, 5)
            if hole_num != mouse:
                # print("没抓到吧!")
                count += 1
            elif count > frequency:
                print("你可太差劲了!被老鼠逗了")
            else:
                print("抓到了,一共抓了%d次" % count)
                break


wha_a_mole(10)

11.编写一个函数,计算一个整数的各位数的平方和

def squares_sum(integer: int):
    sum_squares = 0
    while integer > 0:
        remainder = 0
        remainder = integer % 10
        integer //= 10
        sum_squares += remainder**2
    else:
        return sum_squares


print(squares_sum(12))

12楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,

编程序计算共有多少种不同的走法?需求: 编制一个返回值为整型的函数Fib(n),用于获取n阶台阶的走法

实质上是一个斐波拉契数列

def up_steps(steps_num: int):

    if steps_num == 1:
        return 1
    elif steps_num == 2:
        return 2
    else:
        return up_steps(steps_num - 2) + up_steps(steps_num - 1)


print(up_steps(6))

13.写一个函数对指定的数分解因式

def factor(number: int):
    i = 2
    list_1 = []
    while i <= number:
        if number % i == 0:
            list_1.append(i)

            number /= i
        else:
            i += 1
    if len(list_1) == 1:  # 如果传入的数本身是个质数,则在它的因数列表中插入1
        list_1.insert(0, 1)
        # print(list_1)
    return list_1


print(factor(3))

14.写一个函数判断指定的数是否是回文数

123321是回文数 12321是回文数 525是回文数

1.算法实现

def pal_number(number: int):
    number_1 = str(number)
    length = len(number_1)
    for i in range(0, length):
        if number_1[i] == number_1[length - i-1]:
            flag = 1
        else:
            flag = 0
    if flag == 1:
        print("是回文数")
    else:
        print("不是回文数")


pal_number(12321)

2.利用字符串reverse函数逆序

def pal_number(number: int):
    char_1 = str(number)
    char_2 = "".join(reversed(char_1))
    if char_1 == char_2:
        print("是回文数")
    else:
        print("不是回文数")


pal_number(12321)

15.写一个函数判断一个数是否是丑数(自己百度丑数的定义)

def ugliness_number(number):
    list_1 = []
    i = 2
    while i <= number:
        if number % i == 0:
            list_1.append(i)
            number /= i
        else:
            i += 1
    # print(list_1)
    set_1 = set(list_1)
    set_2 = {2, 3, 5}
    if set_2 > set_1 or set_2 == set_1:
        print("是丑数")
    else:
        print("不是丑数")


ugliness_number(30)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 要自己实现一个RPC框架,主要三个技术点 (1)服务寻址 • (2)数据流的序列化和反序列化 • (3)网络传输 ...
    hangzhou吴彦祖阅读 258评论 0 0
  • 一、难点: 1.产生随机数:srand((unsignedint)time(NULL));inttemp=rand...
    kkkk小天使阅读 202评论 0 0
  • 之前写过动画函数 但是这样的封装比较局限,只能是改变元素的style,而封装成increase这个样的函数,应用场...
    dmengmeng阅读 296评论 0 0
  • 2019年初,高露等明星开始在淘宝直播上开启好物分享;2019年4月,李湘入淘,成为“主播李湘”;而后王祖蓝也来到...
    雨中的悲伤01阅读 205评论 0 0
  • 前年夏天,女儿参加苏州公益活动,那是一场国际心理协会的沙龙。通过她的这次公益实习,我了解到,心理疗愈的方式,除了常...
    热爱生活的Alice阅读 503评论 0 7