《Python核心编程》第2章 习题

2–1. 变量,print和字符串格式化操作符。启动交互式解释器,给一些变量赋值(数值,字符串等)并通过输入变量名显示它们的值,再用print语句做同样的事。这两者有什么区别?

【答】

print语句打印在屏幕上的对象是调用str()函数显示的,因此是以字符串的方式显示; 给变量赋值然后以变量名的的方式显示值的时侯,输出的字符串是用单引号括起来的,这是为了让非字符串对象也能以字符串的方式显示。


24. 使用raw_input()函数得到用户输入                        

(a) 创建一段脚本使用  raw_input() 内建函数从用户输入得到一个字符串,然后显示个 这用户刚刚键入的字符串。 

(b)  添加一段类似的代码,不过这次输入的是数值。将输入数据转换为一个数值对象,(使

用 int()或其它数值转换函数) 并将 个 这值显示给用户看。(注意,如果你用的是早于 1.5 的版本,你需要使用 string.ato*()  函数执行种 这转换) 

【答】

(a)

>>>print (raw_input("Enter Your String : "))    
Enter Your String : Hello World   
Hello World
(b)

print (int(raw_input("Enter a number : ")))    
Enter a number : 123    
123

raw_input函数的返回值就是字符串类型

内建函数int()把数值字符串转换成整型值。但要注意的是需要进行int转型的字符串仅仅包含数字,不能包括其他字符串。比如:
    ainfo = '222'
    print int(ainfo)
    输出的结果是222。然后我们查看下ainfo现在的类型,通过type方法查看下,发现是str
    而如果
    ainfo = 'fefew22'
    print int(ainfo)
    我们看下结果:ValueError: invalid literal for int() with base 10: 'fefew22'
    再如果
    ainfo = 2.222
    print int(ainfo)
    输出结果是2
    ainfo = ‘2.222’
    print int(ainfo)
    输出结果是:ValueError: invalid literal for int() with base 10: '2.222'--因为不是数值字符串,有个'.'
    ainfo = raw_input()输入2.222
    print int(ainfo)
    输出结果是:ValueError: invalid literal for int() with base 10: '2.222'--因为不是数值字符串,有个'.'

要解决上面的问题,可以用string.ato*()函数:

>>>import string    
>>>print(int(string.atof(raw_input("Enter a number : "))))    
Enter a number : 123.123
123


25. 循环和数字 分别使用 while 和 for创建一个循环

(a) 写一个while 循环,输出整数从到 10。(要确保是从到 10,  而不是从09

到 10) 

(b)  做同  (a)  一样的事,  不过这次使用  range() 内建函数。 

【答】

(a)

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

(b)

for i in range(11):
	print i

26.   条件判断判断一个数是正数,还是数 负,  或者等于 0. 开始先用固定的数值,然后修改你的代码支持用户输入数值再进行判断。 

【答】

number=0
guess=int(raw_input('Enter a integer: '))
if guess==number:
    print "you input a 0"
elif guess>number:
    print "you input a positive number"
elif guess<number:
    print "you input a negative number"


27.循环和字串 从用户那里接受一个字符串输入,然后逐字符显示该字符串。先用 while 环实现,然后再用  for  循环实现。

【答】

str=raw_input('Enter a string: ')
#while循环
i=0
while (i<len(str)):
    print str[i]
    i += 1
#for循环
for c in str:
    print c

28.   循环和运算符 创建一个包含五个固定数值的列表或元组,输出他们的和。然后修改你的代码为接受用户输入数值。  分别使用  while  和  for  循环实现。 

【答】

#while循环
i=0
sum=0
while(i<5):
    sum += int(raw_input('enter a number: '))
    i += 1
    print sum
#for循环
sum=0
for i in range(5):
   sum += int(raw_input('enter a number: '))
   print sum

29.循环和运算符 创建一个包含五个固定数值的列表或元组,输出他们的平均值。本练习的难点之一是通过除法得到平均值。 你会发现整数除会截去小数,因此你必须使用浮点除以得到更精确的结果。float()内建函数可以帮助你实现这一功能。 

【答】

list=[1,2,3,4,6]
sum=0
for i in list:
    sum += i
print float(sum)/5

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

【答】

while 1:
     number=int(raw_input('enter a number between 1 and 100: '))
     if number>=1 and number<=100:
         print "you input a right number"
         break
     else:
         print "wrong number,please input again"

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

【答】

while 1:
    print "(1)sum of 5 numbers"
    print "(2)average of 5 numbers"
    print "(x)exit"
    option=raw_input('please choose a option: ')
    if option=='1':
       sum=0
       for i in range(5):
          sum += int(raw_input('enter a number: '))
       print sum
    elif option=='2':
        sum=0
        for i in range(5):
          sum += int(raw_input('enter a number: '))
        print float(sum)/5
    elif option=='x' or option=='X':
        break
    else:
        print "wrong option,please input again"

215. 元素排序 

(a)让用户输入三个数 并将 值 分将它 别们保存到3个不同的变量中。不使用列表或排序算法,自己写代码对这三个数由小到大排序。(b)修改(a)的解决方案,使之从大到小排序 

【答】

x=int(raw_input('enter a number: '))
y=int(raw_input('enter a number: '))
if x>y:
    tmp=x
    x=y
    y=tmp
z=int(raw_input('enter a number: '))
if y>z:
    tmp=y
    y=z
    z=tmp
if x>y:
    tmp=x
    x=y
    y=tmp        
print x,y,z






  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值