python核心编程第二版 第二章练习题解答 未完待续

有人可能会想,连2-1和2-2这样的题目都回答,够无聊的啊。
因为现在处于并长期处于成为大师的第一阶段------守的阶段



2-1

>>> a= '123'
>>> a
'123'
>>> print (a)
123

a是字符串123,如果格式化输出有问题报如下错误:

>>> print ('a is %d'% a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str

这样就正确了。

>>> print ('a is %s' % a)
a is 123

a如果是×××:

>>> a = 123
>>> print ('a is %s'% a)
a is 123
>>> a
123
>>> print (a)
123
>>> print ('a is %d' %a )
a is 123

print和交互式解释器显示对象的区别:
print调用str()函数显示对象,而交互式解释器则调用repr()函数来显示对象。



2-2

(a) 用来计算1+2x4的结果
(b)作为脚本什么都不输出
(c)预期的一样,因为这个脚本没有print输出
(d)在交互式系统中有输出,如下:

>>> #!/usr/bin/env python
... 1 + 2 * 4
9
>>>

(e)脚本改进如下:

#!/usr/bin/env python
print (1 + 2 * 4)

输出结果如下:

![](https://s1.51cto.com/images/blog/201904/20/791289dff32149259a72c171344afb03.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)


2-3

在python3中/是真正的除法,//是地板除(取整,取比实际除法得到的结果小最近的整数)

python核心编程第二版 第二章练习题解答 未完待续

python核心编程第二版 第二章练习题解答 未完待续



2-4

脚本:

[root@centos7_01 P36practise]# cat 2_4.py
#!/usr/bin/env python
x =  raw_input("please input a string:\n")
print x

运行结果:

[root@centos7_01 P36practise]# python 2_4.py
please input a string:
ad cd
ad cd


2-5

[root@centos7_01 P36practise]#  cat 2-5.py
#!/usr/bin/env python
print 
print ("using loop while:")

i = 0
while i < 11 :
    print i
    i += 1
print 

print ("*"*50)

print ("using loop for:")

for i in range(11):
    print i
print 

运行结果:

[root@centos7_01 P36practise]# python 2-5.py 

using loop while:
0
1
2
3
4
5
6
7
8
9
10

**************************************************
using loop for:
0
1
2
3
4
5
6
7
8
9
10


2-6

[root@centos7_01 P36practise]# cat 2-6.py 
#!/usr/bin/env python
import sys

print ("if you want to exit the program please insert q\n")
i = raw_input("please input a number:\n")

def fun(i):    
    try:
        i = int(i)
    except ValueError:
        print ("WARNING !!! %s is not permit \nplease input a num or 'q':\n")%i
        sys.exit()
    if i < 0:
        print "judge:%d is negative" % i
        print 

    elif i == 0:
        print "judge:%d is zero" % i
        print

    else:
        print "judge:%d is positive" % i
        print

while i != 'q':
    fun(i)
    i = raw_input("please input a number:\n")

else:
    sys.exit()

运行结果:(输入ctrl+c退出)

[root@centos7_01 P36practise]# python 2-6.py 
if you want to exit the program please insert q

please input a number:
1
judge:1 is positive

please input a number:
-1
judge:-1 is negative

please input a number:
0
judge:0 is zero

please input a number:
^CTraceback (most recent call last):
  File "2-6.py", line 27, in <module>
    i = raw_input("please input a number:\n")
KeyboardInterrupt

输入q退出:

[root@centos7_01 P36practise]# python 2-6.py
if you want to exit the program please insert q

please input a number:
-1
judge:-1 is negative

please input a number:
1   
judge:1 is positive

please input a number:
q
[root@centos7_01 P36practise]# 


2-7

[root@centos7_01 P36practise]# cat 2-7.py
#!/usr/bin/env python
#encoding:utf8

import sys

str = raw_input("please input a string:\n")
for i in str:
    print i

print "*"*50
print

print "网上搜来的方法:\n"
i = 0
while i < len(str):
    print str[i]
    i += 1

print "野路子\n"

i = 0
while str:
    try:
        print str[i]
    except IndexError:
        sys.exit()
    i += 1

[root@centos7_01 P36practise]# 

运行结果:

[root@centos7_01 P36practise]# python 2-7.py 
please input a string:
ahead blonging ok
a
h
e
a
d

b
l
o
n
g
i
n
g

o
k
**************************************************

网上搜来的方法:

a
h
e
a
d

b
l
o
n
g
i
n
g

o
k
野路子

a
h
e
a
d

b
l
o
n
g
i
n
g

o
k

修改程序后,禁止掉他的换行

[root@centos7_01 P36practise]# cat 2-7.py
#!/usr/bin/env python
#encoding:utf8

import sys

str = raw_input("please input a string:\n")
print 
for i in str:
    print i,
print 
print 
print "*"*50
print

print "网上搜来的方法:\n"
i = 0
while i < len(str):
    if i == len(str):
        print str[i]
    else:
        print str[i],
    i += 1
print 
print 
print "野路子:\n"

i = 0
while str:
    try:
        print str[i],
    except IndexError:
        sys.exit()
    i += 1

[root@centos7_01 P36practise]#

运行结果:

[root@centos7_01 P36practise]# python 2-7.py
please input a string:
what

w h a t

**************************************************

网上搜来的方法:

w h a t

野路子:

w h a t
[root@centos7_01 P36practise]# 


2-8

[root@centos7_01 P36practise]# cat 2-8.py
#!/usr/bin/env python

#tuple1 = (1, 2, 3, 4, 5)
#list1 = [5, 6, 7, 8, 9]
#
def sum1(x):
    sum = 0
    for i in x:
        sum += i
    print sum,"sum1"

def sum2(x):
    sum = 0
    i = 0
    list2 = list(x)
    while i < len(list2):
        sum += list2[i]
        i += 1
    print sum,'sum2'

#print "using for sum\n"
#sum1(tuple1)
#sum1(list1)
#print

#print "using while sum\n"
#sum2(list1)
#sum2(tuple1)
#
#print 
#print "interactive input tuple or list:\n"
#
x = raw_input("please input a tuple or list:\n")
def f(x):
    l = []
    for i in x.split(' '):
        try:
            l.append(int(i))
        except ValueError:
            print 'the value you input have some innumberal character\n'
    return l 
y = f(x)
sum1(y)

运行结果

[root@centos7_01 P36practise]# python 2-8.py
please input a tuple or list:
1 2 3 4 5
15 sum1


2-9

[root@centos7_01 P36practise]# cat 2-9.py
#!/usr/bin/env python

#tuple1 = (1, 2, 3, 4, 5)
#list1 = [5, 6, 7, 8, 9]
#
def sum1(x):
    sum = 0
    for i in x:
        sum += i
    return sum

def sum2(x):
    sum = 0
    i = 0
    list2 = list(x)
    while i < len(list2):
        sum += list2[i]
        i += 1
    return sum,list2

def average(x,y):
    z = float(x) / y 
    print z
#print "using for sum\n"
#sum1(tuple1)
#sum1(list1)
#print

#print "using while sum\n"
#sum2(list1)
#sum2(tuple1)
#
#print 
#print "interactive input tuple or list:\n"
#
x = raw_input("please input a tuple or list:\n")
def f(x):
    l = []
    for i in x.split(' '):
        try:
            l.append(int(i))
        except ValueError:
            print 'the value you input have some innumberal character\n'
    return l 
y = f(x)
average(sum1(y),len(y))

运行结果:

[root@centos7_01 P36practise]# python 2-9.py
please input a tuple or list:
1 2 3 4 5
3.0


2-10

代码:

[root@centos7_01 P36practise]# cat 2-10.py
#!/usr/bin/env python
#encoding:utf
import sys

def num_judge(x):
    if x >= 1 and x <= 100:
        return True
    else:
        return False
while 1:
    try:
        x = int(raw_input('please input a num:\n'))
    except ValueError:
        print "please input a number! byebye!\n"
        sys.exit()
   #一开始没有对x进行int处理,导致在1~100之间的数字也不能成功
    print '*'*50
    if num_judge(x):
        print "success!"
        print 

    else:
        print 'please input a number between 1 and 100'
    print 
           # else:
   #     x = raw_input('please input a num:\n')
   # 一开始有这个部分,导致下面这种情况出错:
   # 先输入一个不符合的数字,然后再输入一个符合的,这是这个第一次符合的数字会误判成不符合,就是因为多写了这个else
   # 后来把else:里面加了pass。后来发现干脆把else去掉了。i'''

#while 循环的核心思想是,只要为真,while中的子句总是从上往下一直执行下去

运行结果:

[root@centos7_01 P36practise]# python 2-10.py
please input a num:
1
**************************************************
success!

please input a num:
2
**************************************************
success!

please input a num:
101
**************************************************
please input a number between 1 and 100

please input a num:
adf
please input a number! byebye!

[root@centos7_01 P36practise]# 


2-11

[root@centos7_01 P36practise]# cat 2-11.py
#!/usr/bin/env python
#encoding:utf8

import sys

#求和
def sum1(x):
    sum = 0
    for i in x:
        sum += i
    return sum

#求平均值
def average(x,y):
    z = float(x) / y 
    print z
#转换输入的数据
def f(x):
    l = []
    for i in x.split(' '):
        try:
            l.append(int(i))
        except ValueError:
            print 'the value you input have some innumberal character\n'
    return l 

def max(x):
    print "The maxium num in this line is :\n"

x = raw_input("please input a tuple or list:\n")
y = f(x)

print "please choose you calculator:\n"

print "(1)取五个数的和:\n(2)取五个数的平均值\n(X)退出\n"

while 1:
    k = raw_input("please input a str in 1,2, ..., X:\n")

    if k == '1':
        print sum1(y)
    if k == '2':
        sum1(y)
        print "*"*50
        average(sum1(y),len(y))
    if k == '3':
        max(y)
    if k == 'X':
        sys.exit()

运行结果:

[root@centos7_01 P36practise]# python 2-11.py
please input a tuple or list:
a 2 3 4 5
the value you input have some innumberal character

please choose you calculator:

(1)取五个数的和:
(2)取五个数的平均值
(X)退出

please input a str in 1,2, ..., X:
1
14
please input a str in 1,2, ..., X:
2
**************************************************
3.5
please input a str in 1,2, ..., X:
x
please input a str in 1,2, ..., X:
X
[root@centos7_01 P36practise]# 

猜你喜欢

转载自blog.51cto.com/12280599/2381919