美文网首页ITS·黑客
【python】练习-到高级特性

【python】练习-到高级特性

作者: 某米狼 | 来源:发表于2017-04-08 23:49 被阅读91次
    1. 请打印出以下变量的值:
    n = 123
    f = 456.789
    s1 = 'Hello, world'
    s2 = 'Hello, \'Adam\''
    s3 = r'Hello, "Bart"'
    s4 = r'''Hello,
    Lisa!'''
    print(%d%f%s%s%s%s
    

    怎样故意让它没空格?
    print(n,f,s1) 会有空格
    print(n+f+s1) 类型不同不能加 unsupported operand type(s)
    方法:
    print("%d%.3f%s%s%s%s" % (n,f,s1,s2,s3,s4))
    print(n,f,s1,s2,s3,s4,sep='')
    print(n,f,s1,s2,s3,s4,sep='\n')

    Python标准库:内置函数print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
    关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;关键字参数end是输出结束时的字符,默认是换行符\n;关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;参数flush是立即把内容输出到流文件,不作缓存。

    1. 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位
    # -*- coding: utf-8 -*-
    s1 = 72
    s2 = 85
    r = (s2-s1)/s2*100
    print('%.1f%%' % r)
    
    1. 请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串:
    # -*- coding: utf-8 -*-
    n1 = 255
    n2 = 1000
    print(hex(n1),hex(n2))
    

    注意hex函数不能调用str字符串,可能需要int()一下

    1. 请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax2 + bx + c = 0 的两个解。
    # -*- coding: utf-8 -*-
    import math
    def quadratic(a, b, c):
        delta=b*b-4*a*c
        if delta < 0:
            y='无解'
        else:
            y=((-b+math.sqrt(delta))/(2*a),(-b-math.sqrt(delta))/(2*a))
        return y
    # 测试:
    print(quadratic(2, 3, 1)) # => (-0.5, -1.0)
    print(quadratic(1, 3, -4)) # => (1.0, -4.0)
    

    注意if、elif、else后面的冒号不要忘记

    1. 汉诺塔的移动可以用递归函数非常简单地实现。
      请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法
    def move(n, a, b, c):
        if n==1:
            print(a,'->',c)
        else:
            move(n-1,a,c,b)
            move(1,a,b,c)
            move(n-1,b,a,c)
    # 期待输出:
    # A --> C
    # A --> B
    # C --> B
    # A --> C
    # B --> A
    # B --> C
    # A --> C
    move(3, 'A', 'B', 'C')
    
    1. 请修改列表生成式,通过添加if语句保证列表生成式能正确地执行:
    # -*- coding: utf-8 -*-
    L1 = ['Hello', 'World', 18, 'Apple', None]
    L2 = [x for x in L1 if isinstance(x,str) is True]
    # 期待输出: ['hello', 'world', 'apple']
    print(L2)
    

    注意True首字母大写

    1. 杨辉三角
    # -*- coding: utf-8 -*-
    def triangles():
        g = [1]
        yield g
        g = g.append(0)
        g = [g[n-2]+g[n-1] for n in range(len(g))]
    # 期待输出:
    # [1]
    # [1, 1]
    # [1, 2, 1]
    # [1, 3, 3, 1]
    # [1, 4, 6, 4, 1]
    # [1, 5, 10, 10, 5, 1]
    # [1, 6, 15, 20, 15, 6, 1]
    # [1, 7, 21, 35, 35, 21, 7, 1]
    # [1, 8, 28, 56, 70, 56, 28, 8, 1]
    # [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
    n = 0
    for t in triangles():
        print(t)
        n = n + 1
        if n == 10:
            break
    

    报错:object of type 'NoneType' has no len()
    g = g.append(0)改成g.append(0)
    因为append()没有返回值,所以g=None
    不报了,但是输出[1]而已
    yield g 前忘了加上while True: 输出

    [1]
    [1, 1]
    [1, 1, 2]
    [2, 1, 2, 3]
    ...
    

    不对,看来for n in range() n是从0开始的
    改成 g = [g[n]+g[n-1] for n in range(len(g))]
    成功!

    相关文章

      网友评论

        本文标题:【python】练习-到高级特性

        本文链接:https://www.haomeiwen.com/subject/ijerattx.html