zoukankan      html  css  js  c++  java
  • 几道python练习题20200831

    几道python练习题20200831

    github 几道python练习题20200831

    1

    nope = False
    zilch = 0
    nada = []
    a = (nope, zilch and nada)
    print(type(a), a)
    if (nope, zilch and nada):
        print("Stay positive!")
    else:
        print("Don't be so negative!")
    
    

    这个输出的结果是"Stay positive!".因为(nope, zilch and nada)是一个非空元组。

    2

    a, b = 0, 1
    
    def fibonacci(n):
        for _ in range(n):
            a, b = b, a + b
        return a
    
    
    print(fibonacci(4))
    
    

    这个无法正常运行,因为a, b 没有声明,如果想正常运行,可以在fibonacci函数中,使用global 声明a,b为全局变量。

    3

    values = [1, 2, 3, 4, 5]
    is_events = [x % 2 == 0 for x in values]
    result = sum(is_events)
    print(result)
    

    得出的结果是2。在数组sum时,True会被当作1,False会被当做0

    4

    def add_to_list(*args, my_list=[]):
        my_list += args
        return my_list
    
    
    x = add_to_list(1, 2, 3)
    y = add_to_list(4, 5, 6)
    print(x)
    

    结果是[1,2,3,4,5,6].list, set, dict都属于可变对象,他们始终指向同一个空间地址。

    5

    seconds = 10
    for i in range(seconds):
        --seconds
    if seconds:
        print("Still waiting...")
    else:
        print("You're done!")
    
    

    结果是Still waiting... 。在pyhotn中就不存在--操作

    6

    multipliers = [lambda x: (i + 1) * x for i in range(5)]
    
    
    def print_times_table(value):
        print([fn(value) for fn in multipliers])
    
    
    print_times_table(2)
    
    

    结果是[10, 10, 10, 10, 10].python 惰性求值

    7

    a = b = [1]
    a += [2]
    print(b)
    a = a + [3]
    print(b)
    

    结果是[1, 2], [1, 2]. 对于可变对象+=是在本地对象的基础上操作,而= + 这个是对变量重新进行赋值,而python中赋值就是产生一个新对象。

    8

    a = b = '1'
    a += '2'
    print(a, b)
    a = a + '3'
    print(a, b)
    

    结果:1,2 1 1,23 1 对于不可变对象+= =+ ,都要产生一个新的对象

    9

    a = ([1, 2, 3], [4])
    a[0] += [4]
    print(a)
    

    这个第二行会报错,因为a是元组,不可变对象,不可以对对象的值进行修改

    10

    a = b = 500
    print(a is b)
    
    a -= 200
    b -= 200
    print(a is b)
    
    a = a - 200
    b = b - 200
    print(a is b)
    

    结果:True False True 。 这个第一个为True很容易明白,但是第二个和第三个,都是不可变对象,按照前面遇到的题,应该都是重新赋值吗,可是为什么就第二个是false,第三个是true呢,这个就是python做了小整数([-5, 256])优化,防止频繁申请释放内存,对于小整数的值,全局只有一个id,因此,第3个是true。如果把第一行500的值换成700,那么应该是true, false,false了.

  • 相关阅读:
    AN BD FD DD CD UT CT TT IT ST UAT OP
    log4j
    重构代码
    with as sql的优化
    svn locked,并且无法clean up 的解决方法
    去掉Eclipse中没用的workspace
    getHibernateTemplate()的get方法
    Java反射
    windows 右键新建html文档
    fiddler 针对单个接口打断点
  • 原文地址:https://www.cnblogs.com/liangping/p/13611131.html
Copyright © 2011-2022 走看看