美文网首页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】练习-到高级特性

    请打印出以下变量的值: 怎样故意让它没空格?print(n,f,s1) 会有空格print(n+f+s1) 类型不...

  • Python练习-高级特性

    1.切片:利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法: ...

  • Python学习(三)

    Python的高级特性 python中有很多高级特性,比起C/C++来说要简单许多,运用起来十分方便。 切片 通常...

  • Python高级特性

    切片slice取指定索引范围的操作:[0:10:2]-->意为从第一个元素到第11个元素,元素之间隔2 迭代ite...

  • python 高级特性

    1.切片对取数据很方便,如取一个list的前n个元素,没有接触到切片的,可以使用循环,但是用切片就会很简单: 也支...

  • Python高级特性

    切片 迭代 列表生成式 生成器 generator generator:按照某种算法推算出来结果,是一种一边循环一...

  • Python——高级特性

    #!/usr/bin/python # -*- coding:UTF-8 -*- __author__ = 'wx...

  • python高级特性

    python高级特性 iteration迭代 对list,tuple的遍历被称为迭代。对list实现类似Java那...

  • python高级特性

    一、列表生成器 1. 形式: [表达式 for ... in 可迭代类型 [if expression] ] 2....

  • Python 高级特性

    切片 迭代 列表生成式 生成器 迭代器

网友评论

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

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