《Python核心编程》第二版第36页第二章练习
这里列出的答案不是来自官方资源,是我自己做的练习,可能有误。
2.21 练习
2-1.
变量,print和字符串格式化操作符。启动交互式解释器,给一些变量赋值(字符串,数值等)并通过输入变量名显示他们的值。再用print语句做同样的事。这两者有何区别?也尝试着使用字符串格式操作符%,多做几次,慢慢熟悉它。
【答案】
对于一个字符串,在仅使用变量名时,输出的字符串是用单引号括起来了的。这是为了让非字符串对象也能以字符串的方式显示在屏幕上,即它显示的是该对象的字符串表示,而不仅仅是字符串本身。如果使用print命令,能使输出更加友好。
2-2.
程序输出。阅读下面的Python脚本。
#!/usr/bin/env python
1 + 2 * 4
(a)你认为这段脚本是用来做什么的?
(b)你认为这段脚本会输出什么?
(c)输入以上代码,并保存为脚本,然后运行它,它所做的与你的预期一样吗?为什么一样/不一样?
(d)这段代码单独执行和在交互解释器中执行有何不同?试一下,然后写出结果。
(e)如何改进这个脚本,以便它能和你想象的一样工作?
【答案】
用来计算。
会输出9,如果是在WINDOWS系统和Ubuntu系统。
如果仅仅是以上代码的脚本,是没有输出的。
在交互解释器中执行以后得到结果9。
如果需要将其在脚本中执行并得到期望结果,需要改成 print 1 + 2 * 4 即可。
2-3.
数值和操作符。启动交互解释器,使用Python对两个数值(任意类型)进行加、减、乘、除运算。然后使用取余操作符来得到两个数相除的余数,最后使用乘方操作符求A数的B次方。
【答案】
略。
请注意Python的除法,在3.0以下的版本中,有所谓True除法和地板除。
当使用x/y形式进行除法运算时,如果x和y都是整形,那么运算的会对结果进行截取,取运算的整数部分。
>>> print 5 / 3
1
如果x和y中有一个是浮点数,那么会进行True除法。
>>> print 5 / 3.
1.66666666667
所谓floor除法,采用x//y的形式,得到不大于结果的最大整数值,这个运算时与操作数无关的。
>>> print -5 // 3
-2
>>> print -5 // 3.
-2.0
2-4.
使用raw_input()函数得到用户输入。
(a)创建一段脚本使用raw_input()内建函数从用户输入得到一个字符串,然后显示这个用户刚刚键入的字符串。
(b)添加一段类似的代码,不过这次输入的是数值。将输入数据转换为一个数值对象,(使用int()或其他数值转换函数)并将这个值显示给用户看(注意,如果你用的是早于1.5的版本,你需要使用string.ato*()函数执行这种转换)。
【答案】
(a)代码如下:
>>> a = raw_input("Please input a string ... ")
Please input a string ... 99
>>> print a
99
(b)代码如下:
>>> a = raw_input("Please input a letter ... ")
Please input a letter ... b
>>> print ord(a)
98
2-5.
循环和数字。分别使用while和for创建一个循环。
(a)写一个while循环,输出整型为0~10(要确保是0~10,而不是0~9或1~10)。
(b)做同(a)一样的事,不过这次使用range()内建函数。
【答案】
(a)for循环代码如下:
>>> for i in 'abcdefghijk':
... print ord(i)-97,
...
0 1 2 3 4 5 6 7 8 9 10
(a)while循环代码如下:
>>> i = 0
>>> while ( i < 11 ):
... print i,
... i = i + 1
...
0 1 2 3 4 5 6 7 8 9 10
(b)代码如下:
>>> for i in range(0,11):
... print i,
...
0 1 2 3 4 5 6 7 8 9 10