牛客网刷题笔记(一)

  1. def bar(multiple):

        def foo(n):

            return multiple ** n #意思是开方

        return foo

    print bar(2)(3) # 结果是8

  2. Python 中的标识符不能以数字开头,这也是普遍编程语言的通用规则 
  3. 将 x = (y = z + 1) 中右半部分括起来后,相当于把一个赋值表达式赋值给变量 x,因此出现语法错误。

    正确的赋值语法应把括号去掉,即:

    1

    x = y = z + 1

    这种赋值方式可称为 连续赋值、批量赋值、多元赋值、多变量赋值 等。

  4. Python 中字符串的前导 r 代表原始字符串标识符,该字符串中的特殊符号不会被转义,适用于正则表达式中繁杂的特殊符号表示。

    最典型的例子,如要输出字符串 \n,由于反斜杠的转义,因此一般的输出语句为:

    1

    print "\\n"

    这里的 \\ 将被转义为 \ 。而采用原始字符串输出时,则不会对字符串进行转义:

    1

    print r"\n"

    因此本题答案为 C,输出 \nwoow 。注意前导标识符 r 不会被输出,只起标记作用。

  5. (1)会被python认为是int类型,所以必须是(1,)

  6. __name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中,__name__ 的名称就是__main__如果不是,则为这个模块的名称。 

          

第二行foo1 = foo,是将fool的地址赋予给fool,即foo与foo1指向内存中同一地址。

第三行当执行foo.append时,因为python中列表的值是可以变化的。所以就在原来的存放foo的内存地址改变了foo的值,由最初的[1, 2]变为[1, 2, 3]。由于foo1和foo 是指向同一地址空间的索引,所以当foo内存地址所存储的值被改变时,打印foo1时,foo1的值也变化了。

     8.理解a=range(100)是什么意识?

       range(start, end, step),start:起始值;end:终值;step:步长,默认为1。

       a:0、1、2、3、4、5、......99。

      所以,正索引范围为:a[0] -a[end-1],

      即 a[0] = 0,a[1] = 1,......,依次类推;

      负索引范围为:a[-1] -a[-end],

      即 a[-1] = 99,a[-2] = 98,......,依次类推。

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/87860843