- 请打印出以下变量的值:
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是立即把内容输出到流文件,不作缓存。
- 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位
# -*- coding: utf-8 -*-
s1 = 72
s2 = 85
r = (s2-s1)/s2*100
print('%.1f%%' % r)
- 请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串:
# -*- coding: utf-8 -*-
n1 = 255
n2 = 1000
print(hex(n1),hex(n2))
注意hex函数不能调用str字符串,可能需要int()一下
- 请定义一个函数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后面的冒号不要忘记
- 汉诺塔的移动可以用递归函数非常简单地实现。
请编写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')
- 请修改列表生成式,通过添加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首字母大写
- 杨辉三角
# -*- 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))]
成功!