python-day10-作业

  1. 写一个匿名函数,判断指定的年是否是闰年
n = int(input('请输入年份,判断是否闰年:'))
fn1 = lambda x:(x % 4 ==0 and x % 100 != 0) or (x % 100 == 0)
print(fn1(n))
  1. 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
def exchange(str1: list):
    # 让列表倒序排列
    if len(str1) & 1:
        len1 = len(str1) // 2 + 1
    else:
        len1 = len(str1) // 2
    for x in range(len1):
        str1[x], str1[len(str1)-1-x] = str1[len(str1)-1-x], str1[x]
    return str1


str1 = [1, 2, 3]
str2 = exchange(str1)
print(str2)
  1. 写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回)
    例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3
def find_index(str1: list, n: int):
    # 找到元素的下标并返回
    len1 = len(str1)
    str2 = []
    for x in range(len1):
        if str1[x] == n:
            str2.append(x)
    if str2:
        return str2
    else:
        return '该列表没有此元素'


str1 = [1, 3, 4, 1]
n = int(input('请输入元素:'))
str3 = find_index(str1, n)
print(str3)
  1. 写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的update方法)
def add_s(dict1: dict, dict2: dict):
    # 将一个字典中的键值对添加到另外一个字典中
    for key, value in dict2.items():
        dict1[key] = value
    return dict1


dict1 = {'name': '小明', 'age': 20}
dict2 = {'study_id': 'qf9233', 'tel': '293728973'}
dict3 = add_s(dict1, dict2)
print(dict3)
  1. 写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母(不能使用字符串相关方法)
def transform(str1: list):
    # 转换字符串的大小写字母
    str2 = str1.copy()
    for x in range(len(str2)):
        char = str2[x]
        if 'a' <= char <= 'z':
            str1[x] = chr(ord(char) - 32)
        elif 'A' <= char <= 'Z':
            str1[x] = chr(ord(char) + 32)
    return str1


str1 =input('请输入元素:')
str3 = transform(str1)
print(str3)
  1. 实现一个属于自己的items方法,可以将指定的字典转换成列表。列表中的元素是小的列表,里面是key和value (不能使用字典的items方法)

      例如:{'a':1, 'b':2} 转换成 [['a', 1], ['b', 2]]  
    
def key_value(dict1:dict):
    list2 = []
    count1 = 0
    for key in dict1:
        m = key
        count1 += 1
        count2 = 0
        for value in dict1.values():
            count2 += 1
            if count1 == count2:
                list1 = [m, value]
                list2.append(list1)
    return list2


dict1 = {'a':1, 'b':2, 'c':3}
print(key_value(dict1))
  1. 用递归函数实现,逆序打印一个字符串的功能:
 例如:reverse_str('abc')  ->  打印 ‘cba’
def reverse_str(str1: str, i=-1):
    if i == -len(str1):
        print(str1[i])
        return 1
    print(str1[i], end='')
    i -= 1
    return reverse_str(str1, i)


reverse_str('abc')
  1. 编写一个递归函数,求一个数的n次方
def power(n, x):
    # 算一个数的第几次方
    if x == 1:
        return n
    return power(n, x-1)*n


m = int(input('请输入要算的值:'))
n = int(input('请输入几次方:'))
print(power(m, n))
  1. 写一个可以产生学号的生成器, 生成的时候可以自定制学号数字位的宽度和学号的开头
 例如:
 study_id_creater('py',5) -> 依次产生: 'py00001', 'py00002', 'py00003',....
 study_id_creater('test',3) -> 依次产生: 'test001', 'test002', 'test003',...
def id_creater(begin: str, n: int):
    for i in range(10 ** n):
        after = '0' * (n - len(str(i))) + str(i)
        print(begin+after)
        yield
    return begin

#方法2
# def study_id_creater(pre, width):
#     for num in range(1, 10**width):
#         yield pre+str(num).zfill(width)
# 
# 
# gen1 = study_id_creater('py1904',3)
# for x in range(3):
#     print(next(gen1))
  1. 编写代码模拟达的鼠的小游戏,

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

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

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

import random
import time as tm


def whack_a_mole():
    hole = int(input('猜一猜地鼠在哪?'))
    while True:
        if hole != random.randint(1, 5):
            if 1 <= hole <= 5:
                tm.sleep(1)
                print('猜错了')
            else:
                print('超出范围')
            return whack_a_mole()
        else:
            tm.sleep(1.5)
            print('正确')
            return 0


whack_a_mole()

 方法2
# import random
# def game():
#     print('======游戏开始======')
#     while True:
#         num = random.randint(1,5)
#         guss = int(input('请随便猜:'))
#         if num == guss:
#             print('抓到了')
#             print('=====游戏结束=====')
#             break
#         else:
#             print('没抓到,继续')
# 
# game()
  1. 编写一个函数,计算一个整数的各位数的平方和
```python
例如: sum1(12) -> 5    sum1(123) -> 14
```
def quadratic_sum(num: int):
    sum_ = 0
    digits = len(str(num))
    for i in range(1, digits+1):
        sum_ += (num % (10 ** i) // 10 ** (i - 1)) ** 2
    return sum_


n = int(input('请输入整数:'))
print(quadratic_sum(n))
  1. 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编程序计算共有多少种不同的走法?需求: 编制一个返回值为整型的函数Fib(n),用于获取n阶台阶的走法(挣扎一下)
def fib(n):
    if n == 1:
        return 1
    if n == 2:
        return 2
    return fib(n-1)+fib(n-2)
  1. 写一个函数对指定的数分解因式

    例如: mab(6) —> 打印: 2 3   mab(3) -> 1  3   mab(12) -> 2 2 3
    
def mab(n:int):
    list1 = []
    x = 2
    while x < n:
        if n % x == 0:
            list1.append(x)
            n = n // x
        else:
            x += 1
    for x in list1:
        print(x, end=' ')


n = int(input('请输入一个数:'))
mab(n)
  1. 写一个函数判断指定的数是否是回文数
  123321是回文数   12321是回文数   525是回文数
def palindromic_(num: int):
    for i in range(len(str(num)) // 2):
        if str(num)[i] != str(num)[-i - 1]:
            return False
    return True


n = int(input('请输入一个数:'))
print(palindromic_(n))
  1. 写一个函数判断一个数是否是丑数(自己百度丑数的定义)
def ugly_num(num: int):
    factor = 2
    while num != 1:
        if num % factor == 0:
            if factor != 2 and factor != 3 and factor != 5:
                return False
            else:
                num /= factor
        else:
            factor += 1
    return True


n = int(input('请输入整数:'))
print(ugly_num(n))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写一个匿名函数,判断指定的年是否是闰年 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3...
    浩子_唯一号阅读 1,441评论 0 1
  • 写一个匿名函数,判断指定的年是否是闰年 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3...
    oct___我婷姐阅读 1,288评论 0 0
  • 写一个匿名函数,判断指定的年是否是闰年 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3...
    oct___d38e9阅读 2,540评论 0 0
  • 写一个匿名函数,判断指定的年是否是闰年 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3...
    LI3e0阅读 1,643评论 0 1
  • 天下风云出我辈,一入江湖岁月催。 皇朝霸业谈笑间,不胜人间一场醉。 这首诗大概很多人都知道,江湖,有人曾经说,有人...
    风随竹影动阅读 2,817评论 0 7

友情链接更多精彩内容