学python记录

        大家好,别看我这个账号的码龄有两年,事实上我今年大一开学的时候刚学python,只会python这门语言,很菜,勿喷。

        今天去B站学习了python中的列表这节内容,我学到了第二节课,也完成了该课程包含的作业,这节课我学习了切片和append,extend等的使用方法。

        s.append(1) 相当于 s[len(s):] = [1],后面那一个就用到了切片的方法,我对它的理解是:len(s)表示原列表的最后一位的下一位,所以[len(s):]表示自原列表后的数,即[len(s):] = [1]表示在原列表后的数换成1,也就相当于在原列表的后面加一个数,所以能与append的用法相等,append只能加一个元素,不能加可迭代对象。

        s.extend(iterable) 相当于 s[len(s):] = iterable,extend与append不同,它的括号内只可填一个可迭代对象,可迭代对象内可拥有多个元素,即可同时向列表内加入多个元素。

        s.insert(想插入的位置,插入的元素),就是能把特定元素插入特定位置,s.insert(len(s),1) 相当于 s.append(1),都是在原列表的最后一位的下一位上插入1.

        接下来是我对我所写的作业的呈现:

r = input("请输入测试字符串:")
s = []
s.extend(r)
a = len(s)
i = 0
if a % 2 == 0:
    while len(s) != 0:
        if s[0] == "[" and s[-1] == "]" or s[0] == "(" and s[-1] == ")" or s[0] == "{" and s[-1] == "}":
            s.pop(0)
            s.pop()
            i += 1
            if i == a/2:
                print("合法^o^")
        else:
             print("非法T_T")
             break
if a % 2 != 0:
    print("非法T_T")

        这是一个判断你输入的字符串中的括号书写方式是否正确,只包含"(",")","[","]","{","}"这三对括号的判断,因为要把括号的每一边括号都作为列表的元素,所以我用了extend,而没有用append,我程序的初步判别是对括号的个数判别,若为双数则满足合法条件中的一条,反之则不符。接下来判断它成对后,便要来判断格式是否相符,因为格式需要,所以第一位与表格的最后一位必须是成对的,每判断成功一对就用pop删掉一对,这样通过循环就能一直判断掉所有括号是否成对,期间但凡有一对不符,便会进入else,即被判定为非法输入,并通过break跳出循环,否则会陷入死循环。

        因为这道题比较难,所以那个博主给了一个空了几行的代码让我们填写,所以我写完自己的之后,打开了他的代码,初次看觉得比我复杂,然后我就想他为什么比我复杂,结果发现我没把题目看完整,他把{[]}()也设定为合法,而我的程序把这个归为合法。下面是我填写完的代码。

s = input("请输入测试字符串:")
d = 0
stack = []


for c in s:
    if c == "(" or c == "[" or c == "{":
        stack.append(c)
    else:
        if len(stack) == 0:
            print("非法T_T")
            break
        if c == ")":
            d = "("
        elif c == "]":
            d = "["
        elif c == "}":
            d ="{"

        if d != stack.pop():
            print("非法T_T")
            break
else:
    if len(stack) == 0:
        print("合法^o^")
    else:
        print("非法T_T")

        我发现这段代码的思维很巧妙,我也是看了仔细看了之后才懂的,他以输入的包含括号们的字符串为迭代对象,然后把前面的左括号先提取出来依次放入一个列表内,这之间一旦遇到右括号便会进行是否为空列表的判断,若为空列表则说明是从右括号开始的,格式错误,若不为空列表则把第一个右括号转为与他对应的左括号,然后判断与列表内的最后一个符号是否一致,因为在格式正确的时候,遇到第一个右括号必是与最后一个左括号对应的,他们是最里面的一对括号,然后用pop()把列表内判断过的左括号去掉,这样最后一个左括号便变成倒数第二个右括号,然后便可以依据之前的规则一直判断了。

        这便是我这节课的主要学习内容和作业情况了。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值