2-10. 带循环和条件判断的用户输入。用raw_input()函数来提示用户输入一个1和100之间的数,如果用户输入的数满足这个条件,显示成功并退出。否则显示一个错误消息然后再次提示用户输入数值,直到满足条件为止。

答案:

#!/usr/bin/env python
while True:
    num=int(raw_input('Enter a number between 1 and 100:'))
    if 1<=num<=100:
        print 'succed'
        break
    else:
        print 'There is a error,please input again'


2-11. 写一个带文本菜单的程序,菜单项如下:(1)取五个数的和;(2)取五个数的平均值;(X)退出。由用户做一个选择,然后执行相应的功能。当用户选择退出时程序结束。这个程序的有用之处在于用户在功能之间切换不需要一遍又一遍的重新启动你的脚本。

答案:

#!/usr/bin/env python
numlist=[1,2,3,4,5]
print "There are five numbers",
print numlist
s=0
for i in numlist:
    s=s+i
def avg(s):
    avg=float(s)/5
    print "The average is",avg
def sum(s):
    print "The summary is",s
ele=raw_input("Enter your choice:")
while True:
      if ele=='1':
         sum(s)
      elif ele=='2':
         avg(s)
      elif ele=='x':
          break
      else:
         print "Error"
      ele=raw_input("Enter your choice again:")


2-12.dir()内建函数。

(a)启动Python交互式解释器,通过直接键入dir()回车以执行dir()函数内建函数。你看到什么?显示你看到的每一个列表元素的值,记下实际值和你想象的值。

(b)你会问,dir()函数是干什么的?我们已经知道在dir后面加一对括号可以执行dir()内建函数,如果不加括号会如何?试一试,解释器返回给你什么信息?你认为这个信息表示什么意思?

(c)type()内建函数接收任意的Python对象作为参数并返回它们的类型,在解释器中键入type(dir()),看看得到什么?

(d)本练习的最后一部分,我们来瞧一瞧Python的文档字符串。通过dir.__doc__可以访问dir()内建函数的文档字符串。print dir.__doc__可以显示这个字符串的内容。许多内建函数﹑方法﹑模块及模块属性都有相应的文档字符串。我们希望你在你的代码中也要书写文档字符串,它会对这些使用这些代码的人提供及时方便的帮助。

答案:

(a)dir()函数的输出如下:

130550817.jpg

dir()函数能够列出目前的模块,内建函数和变量。

(b)不加括号的dir输出如下,表示是一个内建函数:

130837280.jpg

(c)type(dir)的输出如下:

131025105.jpg(d)print dir.__doc__的输出如下:

131248482.jpg

翻译:如果调用的时候不加任何参数,就返回当前当前作用域的名字。否则,返回给定对象根据字母顺序组成的属性列表以及能够从该对象得到的属性。如果对象提供了__dir__方法,就会使用该方法,否则就使用默认的dir()逻辑并返回:对于模块对象,返回模块的属性;对于类,则返回其属性及其递归属性;


2-13.利用dir()找出sys模块中更多的东西。

(a)启动Python交互式解释器,执行dir()函数,然后键入import sys模块以导入sys模块。再次执行dir()函数以确认sys模块被正确导入。然后执行dir(sys),你就会看到sys模块的所有属性了。

(b)显示sys模块的版本号属性及平台变量。记住在属性名前一定要加sys这表示这个属性是sys模块的。其中version变量保存着你所使用的Python解释器版本,platform属性则包含着你运行Python时使用的计算机平台信息。

(c)最后,调用sys.exit()函数, 这是一种热键之外的退出Python解释器的方式。

答案:

(a)

133121187.jpg

(b)

133315421.jpg


2-14.操作符优先级和括号分组。重写2.4小结中的Print与语句里的算术表达式,试着在这个算术表达式中添加适当的括号以便它能正常工作。

print (-2)*4+3**2

2-15.元素排序。让用户输入3个数值并分别将他们保存到三个不同的变量中。不用列表或者排序算法,自己写代码来对3个数由小到大排序,然后修改,由大到小排序。

#!/usr/bin/env python
n1=int(raw_input("Enter first number:"))
n2=int(raw_input("Enter second number:"))
n3=int(raw_input("Enter 3rd number:"))
if n1>n2:
    t=n1
    n1=n2
    n2=t
if n1>n3:
    t=n1
    n1=n3
    n3=t
if n2>n3:
    t=n2
    n2=n3
    n3=t
print n1,n2,n3