31.题目:按相反的顺序输出列表的值。
程序分析:可以用列表切片的方式,也可以用reserve函数。
方法一:用reserve函数
# -*- coding: UTF-8 -*-
x = [1,2,3,4,5]
x.reverse()
print x
方法二:切片
# -*- coding: UTF-8 -*-
x = [1,2,3,4,5]
print x[::-1]
或者
# -*- coding: UTF-8 -*-
x = [1,2,3,4,5]
for i in x[::-1]:
print i,
32.题目:按逗号分隔列表。
程序分析:join() 函数,将字符串合并为新的字符串,s.join(words) ,words 是一个只含有字符串的 taple 或者 list,join 用 s 作为分隔符,将 words 中的字符串连接起来,合并为一个字符串。具体可参考:http://blog.youkuaiyun.com/MTbaby/article/details/53065688
# -*- coding: UTF-8 -*-
L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)
print s1
#输出:1,2,3,4,5
33.题目:练习函数调用。
# -*- coding: UTF-8 -*-
def hello_world():
print 'hello world'
def three_hellos():
for i in range(3):
hello_world()
if __name__ == '__main__':
three_hellos()
#输出:hello world
# hello world
# hello world
34.题目:对10个数进行排序。
程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。或者直接用sort函数。
方法一:逐个依次比较法
# -*- coding: UTF-8 -*-
if __name__ == "__main__":
#这部分是把你输入的数字依次放在一个列表中,然后输出
N = 10
# input data
print 'please input ten num:\n'
l = []
for i in range(N):
l.append(int(raw_input('input a number:\n')))
print
for i in range(N):
print l[i]
print
# sort ten num
#是每次内循环找到未排序中的最小值的位置,然后把他们交换就可以
for i in range(N - 1):
min = i
for j in range(i + 1,N):
if l[min] > l[j]:
min = j
l[i],l[min] = l[min],l[i]
print 'after sorted'
for i in range(N):
print l[i]
方法二:用sort()函数 ,初学者最好不要用人家现成的函数或者模块,要自己动手把逻辑思路整出来,这样才能到达练习的效果,sort是人家封装好的,所以你要自己写出自己的代码。
# -*- coding: UTF-8 -*-
x = [25,2,21,3,6,9,5,8,7,78]
x.sort()
print x
方法三:方法一和方法二的结合。(哈哈,方法很多,大家可以各抒己见啊,相互学习啊)
# -*- coding: UTF-8 -*-
N = 10
# input data
print 'please input ten num:\n'
l = []
for i in range(N):
l.append(int(raw_input('input a number:\n')))
print l
#sort ten num
l.sort()
print l
35.题目:求一个3*3矩阵对角线元素之和。
程序分析:给定一个已知的数组,再将a[i][i]累加后输出。
方法一:
# -*- coding: UTF-8 -*-
l = []
x = [1,2,3]
y = [4,5,6]
z = [7,8,9]
l.append(x)
l.append(y)
l.append(z)
print l
#求a[i][i]位置上元素的和
sum = 0
for i in range(3):
sum = sum + l[i][i]
print sum
输出:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
15
方法二:用切片的方式,直接把对角线元素帅选出来载求和
# -*- coding: UTF-8 -*-
x = range(1,10)
a = x[::4]
print a
print sum(a)
输出:
[1, 5, 9]
15
方法三:用最直观的方法把矩阵表示出来
# -*- coding: UTF-8 -*-
#输入矩阵
x = range(1,10)
for row in range(3):
for col in range(3):
print x[row*3+col],
print
#求对角线的和(最容易想到,最直接的方法)
sum = 0
for row in range(3):
for col in range(3):
if col == row:
sum = sum + x[row*3+col]
print '对角线和:',sum
输出:
1 2 3
4 5 6
7 8 9
对角线和: 15
方法四:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
# -*- coding: UTF-8 -*-
a = []
sum = 0.0
for i in range(3):
a.append([])
for j in range(3):
a[i].append(float(raw_input("input num:")))
for i in range(3):
sum += a[i][i]
print sum
输出:
input num:1
input num:2
input num:3
input num:4
input num:5
input num:6
input num:7
input num:8
input num:9
15.0
36.题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
方法一:先把输入的数放在列表的最后一个元素,再进行选择排序,方法与34题一样
# -*- coding: UTF-8 -*-
l = [1,4,6,9,13,16,19,0]
number = int(raw_input("pls input a bumber:"))
l[6] = number #把你输入的数字赋值给列表最后一个元素,即把0替换
N = 8
for i in range(N - 1):
min = i
for j in range(i + 1,N):
if l[min] > l[j]:
min = j
l[i],l[min] = l[min],l[i]
print 'after sorted'
for i in range(N):
print l[i]
输出:
pls input a bumber:11
after sorted
1
4
6
9
13
16
19
方法二:sort(),这方法不用看了。
# -*- coding: UTF-8 -*-
l = [1,4,6,9,13,16,19,0]
number = int(raw_input("pls input a bumber:"))
l[6] = number
l.sort()
print l
输出:
pls input a bumber:11
[0, 1, 4, 6, 9, 11, 13, 16]
方法三:冒泡排序,先想想水冒泡,就是把大的冒出,小的被挤下去。这里也是一样,两两比较,然后交换位置。
# -*- coding: UTF-8 -*-
l = [1,4,6,9,13,16,19,0]
number = int(raw_input("pls input a bumber:"))
l[6] = number
temp = 0
n = 8
for i in range(n):
for j in range(i + 1,n):
if l[i]>l[j]:
temp = l[i]
l[i] = l[j]
l[j] = temp
print l
输出:
pls input a bumber:8
[0, 1, 4, 6, 8, 9, 13, 16]
37.题目:将一个数组逆序输出。
程序分析:用第一个与最后一个交换。
方法一:
# -*- coding: UTF-8 -*-
a = [9,6,5,4,1]
N = len(a)
print a
for i in range(len(a) / 2):
a[i],a[N - i - 1] = a[N - i - 1],a[i]
print a
输出:
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
方法二:切片,也不用看,很简单的。
# -*- coding: UTF-8 -*-
l = [1,2,3,4,5]
print l
x = l[::-1]
print x
输出:
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
38.题目:题目:两个变量值互换
程序分析:可直接通过第三个数来交换,或者定义函数
方法一:
# -*- coding: UTF-8 -*-
temp = 0
x = 10
y = 20
print 'x = %d'% x,'y = %d'% y
temp = x
x = y
y = temp
print 'x = %d'% x,'y = %d'% y
输出:
x = 10 y = 20
x = 20 y = 10
方法二:用定义函数的方法交换
def exchange(a,b):
a,b = b,a
return (a,b)
x = 10
y = 20
print 'x = %d,y = %d' % (x,y)
x,y = exchange(x,y)
print 'x = %d,y = %d' % (x,y)
输出:
x = 10,y = 20
x = 20,y = 10
39.题目:统计 1 到 100 之和。
程序分析:可以直接用sum,也可以用for循环。
方法一:
# -*- coding: UTF-8 -*-
sum = 0
for i in range(1,101):
sum += i
print sum
方法二:
# -*- coding: UTF-8 -*-
print sum(range(1,101))
输出:5050
40.题目:求输入数字的平方,如果平方运算后小于 50 则退出。
程序分析:很简单,用判断语句就可以了
方法一:
# -*- coding: UTF-8 -*-
while True:
x = int(raw_input('pls input a number:'))
fg = 0
if x*x < 50:
print '程序已退出,请重新输入'
fg = False
else:
print '%d * %d = %d'%(x,x,x*x)
break
输出:
pls input a number:5
程序已退出,请重新输入
pls input a number:36
36 * 36 = 1296
方法二:定义函数
# -*- coding: UTF-8 -*-
TRUE = 1
FALSE = 0
def SQ(x):
return x * x
print '如果输入的数字小于 50,程序将停止运行。'
again = 1
while again:
num = int(raw_input('Please input number'))
print '运算结果为 %d' % (SQ(num))
if num >= 50:
again = TRUE
else:
again = FALSE
输出:
如果输入的数字小于 50,程序将停止运行。
Please input number:36
运算结果为 1296