python第六次作业

1.某个人进入如下一个棋盘中,要求从左上角开始走,
    最后从右下角出来(要求只能前进,不能后退),
    问题:共有多少种走法?
    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

这是一个八行五列的棋盘

a = 8
b = 5
def div(i , j):
    if i == a - 1 and j == b - 1:
        return 1
    if i < 0 or j < 0 or i >= a or j >= b:
        return 0
    return div(i + 1, j) + div(i , j + 1)

print(div(0, 0))

这里使用到了函数的递归,我们先进行俩个判断,1.不是最后一个 2.判断有没有越界

他们是一个从列走,一个从行走,其累计的值就是总的

结果是330

2.输入一行符号,以#结束,判断其中的对称符号是否匹配。

对称符号包括:
    { } 、 [ ] 、 ( )、 < >

    如果对称符号能够实现中间对称,则输出yes
    否则输出no

def is_match(s):
    stack = []#定义一个空栈
    for c in s:#将输入的值一个一个拿出来
        if c == '{' or c == '[' or c == '(' or c == '<':
            stack.append(c)#插入到空栈里面
        elif c == '}' or c == ']' or c == ')' or c == '>':
            if len(stack) == 0:#判断插入的栈是不是空
                return False
            top = stack.pop()
            if (c == '}' and top == '{') or (c == ']' and top == '[') or (c == ')' and top == '(') or (c == '>' and top == '<'):
                continue
            else:
                return False
    return len(stack) == 0
 
if __name__ == '__main__':
    s = input()
    if is_match(s):
        print('yes')
    else:
        print('no')

这里我们运用到栈,先判断输入一个数量可以整除2的符号串,利用栈先进先出的规则和列表的字符串进行比较(弹栈的方法)

3.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
可知至少存在一个重复的整数,假设只有一个重复的整数。
请找出这个重复的数
def find_duplicate(nums):
    n = len(nums)
    hash_map = {}
    for i in range(n):
        if nums[i] in hash_map:
            return nums[i]
        else:
            hash_map[nums[i]] = True
    return -1
 
if __name__ == '__main__':
    nums = [1,1, 2,2,2, 3, 4, 5, 5]
    print(find_duplicate(nums))

这里我们用字典和return -1 来帮助我们求重复值,当某个值已经重复的时候就会return 出来,但是这里,问你用到的递归的方法,只有次数重复最长的数字会被反回,如果有相同重复次数的,则反回先重复的数字,return -1 表示有重复的值,注意字典是一个key和Value是一对值,
 

4.读入学生成绩,获取最高分best,然后根据下面的规则赋等级值:
(1)如果分数≥best-10,等级为A
(1)如果分数≥best-20,等级为B
(1)如果分数≥best-30,等级为C
(1)如果分数≥best-40,等级为D
(1)其他情况,等级为F
 for i in range(n):
        score = scores[i]
        if score >= best - 10:
            grade = 'A'
        elif score >= best - 20:
            grade = 'B'
        elif score >= best - 30:
            grade = 'C'
        elif score >= best - 40:
            grade = 'D'
        else:
            grade = 'F'
        grades.append(grade)
    return grades

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第八章的作业主要是关于字符串和列表、元组的操作。对于字符串,可以使用索引和切片来获取和修改字符串中的字符,还可以使用内置函数,如len()来获取字符串的长度,以及count()、index()等函数来统计字符出现的次数和找出字符的位置。 对于列表和元组,可以使用索引和切片来获取和修改列表和元组中的元素,还可以使用内置函数,如len()来获取列表和元组的长度,以及count()、index()等函数来统计元素出现的次数和找出元素的位置。 作业可能包括以下内容: 1. 使用字符串的切片和索引操作,截取出指定的子字符串; 2. 使用字符串的内置函数,如count()、index()等来统计指定字符的出现次数和位置; 3. 使用列表的索引来获取和修改指定的元素; 4. 使用列表的切片操作,截取出指定的子列表; 5. 使用列表的内置函数,如append()、count()等来添加元素和统计指定元素的出现次数; 6. 使用元组的索引来获取指定的元素; 7. 使用元组的切片操作,截取出指定的子元组; 8. 使用元组的内置函数,如count()、index()等来统计指定元素的出现次数和位置。 为了完成第八章的作业,我们需要熟悉字符串、列表和元组的基本操作和内置函数的使用。可以通过阅读和理解教材中的相关知识点和示例代码,然后按照作业的要求进行编写和测试。编写过程中需要注意细节和语法的正确性,同时也可以参考官方文档和其他相关资料进行查找和学习。完成作业后,可以将代码保存并运行,然后检查输出结果是否符合预期。如果有错误或不清楚的地方,可以再次阅读教材或者寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值