案例1:
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\\n'。
实例 - 使用 while 循环
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import string
s = raw_input('请输入一个字符串:\\n') letters = 0 space = 0 digit = 0 others = 0 i=0
while i < len(s): c = s[i] i += 1
if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else:
others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)
实例 - 使用 for 循环 #!/usr/bin/python
# -*- coding: UTF-8 -*-
import string
s = raw_input('请输入一个字符串:\\n') letters = 0 space = 0 digit = 0 others = 0 for c in s:
if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else:
others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)
以上实例输出结果为:
请输入一个字符串: 123runoobc kdf235*(dfl char = 13,space = 2,digit = 6,others = 2
案例2:
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
程序分析:无 程序源代码:
Python 实例
#!/usr/bin/python
# -*- coding: UTF-8 -*- tour = [] height = []
hei = 100.0 # 起始高度 tim = 10 # 次数
for i in range(1, tim + 1):
# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)
if i == 1:
tour.append(hei) else:
tour.append(2*hei) hei /= 2
height.append(hei)
print('总高度:tour = {0}'.format(sum(tour)))
print('第10次反弹高度:height = {0}'.format(height[-1]))
以上实例输出结果为:
总高度:tour = 299.609375
第10次反弹高度:height = 0.09765625
案例3:
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for i in range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1): if i != j:
for k in range(ord('x'),ord('z') + 1): if (i != k) and (j != k):
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
print 'order is a -- %s\ b -- %s\c--%s' % (chr(i),chr(j),chr(k))
以上实例输出结果为:
order is a -- z b -- x c--y
案例4:
题目:打印出如下图案(菱形):
* *** ***** ******* ***** *** * 程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。 程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from sys import stdout for i in range(4):
for j in range(2 - i + 1): stdout.write(' ') for k in range(2 * i + 1): stdout.write('*') print
for i in range(3):
for j in range(i + 1): stdout.write(' ')
for k in range(4 - 2 * i + 1): stdout.write('*') print
以上实例输出结果为:
* *** ***** ******* ***** *** * 案例5:
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
# 方法一 : 0 作为加入数字的占位符 a = [1,4,6,9,13,16,19,28,40,100,0] print '原始列表:'
for i in range(len(a)): print a[i],
number = int(raw_input(\"\\n插入一个数字:\\n\")) end = a[9]
if number > end: a[10] = number else:
for i in range(10): if a[i] > number: temp1 = a[i] a[i] = number
for j in range(i + 1,11): temp2 = a[j] a[j] = temp1 temp1 = temp2 break
print '排序后列表:' for i in range(11): print a[i],
以上实例输出结果为:
原始列表:
1 4 6 9 13 16 19 28 40 100 0 插入一个数字: 7 排序后列表: 1 4 6 7 9 13 16 19 28 40 100
因篇幅问题不能全部显示,请点此查看更多更全内容