Python 100例(上)
如果你已经把基础看完,可以尝试一下看看以下例子了,如果不会做也不要紧,你要尝试手动把所有的代码都敲一边。别嫌麻烦,因为都是从麻烦到简单的。
实例1:
题目:有1、2、3、4个数字,能组成多少个相互不同且无重复的三位数?都是多少?
# --*--coding:utf-8 --*--
'''
可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
'''
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if (i != j) and (i != k) and (k != j):
print i, j, k
输出结果:
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
实例2:
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提成10%; 利润高于10万,低于20万时,低于10万的部分按10%提成,高于10万部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数?
# --*--coding:utf-8 --*--
'''
需求:
0-10万提成10%
10-20万提成7.5%
20-40万提成5%
40-60万提成3%
60-100万提成1.5%
100万以上1%
思路:
请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
'''
'''
注:如果列表的顺序相反,计算结果不一样
'''
i = int(raw_input('input:'))
m = [1000000,600000,400000,200000,100000,0]
t = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for s in range(0,6):#循环列表元素数
if i>m[s]:#判断输入的元素
r+=(i-m[s])*t[s]
print (i-m[s])*t[s]
i=m[s]
print r
输出结果:
5000.0
7500.0
10000.0
22500.0
实例3:
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该书是多少?
# --*--coding:utf-8 --*--
'''
需求:判断一个数加100是一个数的完全平方数,加168是另一个数的完全平方数。
思路:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
'''
import math
for i in range(10000):
x = int(math.sqrt(i + 100))
y = int(math.sqrt(i + 168))
if (x * x == i + 100) and (y * y == i + 168):
print i
输出结果:
实例4:
题目:输入某年某年某月某日,判断这一天是这一年的第几天?
# --*--coding:utf-8 --*--
'''
需求:判断输入的日期是本年的第几天
思路:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 情况,闰年且输入月份大于3时需考虑多加一天:
'''
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))
months = [0,31,59,90,120,151,181,212,243,273,304,334]
if 0 <= month <= 12:#判断输入的月份
sum = months[month - 1]
else:
print 'data error'
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):#判断是平年还是润年
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print 'it is the %dth day.' % sum
输出结果:
2015
month:
12
day:
13
it is the 347th day.
实例5:
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
# --*--coding:utf-8 --*--
'''
需求:输入三个整数,有小到大进行排序
思路:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
'''
m = []
for i in range(0,3):
n = int(raw_input('input:'))
m.append(n)
m.sort()#从小到大排序
#m.sort(reverse = True)#从大到小排序
print m
输出结果:
input:7
input:1
[1, 3, 7]
实例6:
题目:斐波那契数列。
# --*--coding:utf-8 --*--
'''
需求:斐波那契数列:0、1、1、2、3、5、8、13、21、34、……。输出第100个斐波数
思路:根据数列规律可以得出下一个数值都是前两个数值的和
'''
'''
方法一:
'''
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a#返回第100个斐波那契数列
print fib(100)
'''
方法二:
'''
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1)+fib(n-2)
print fib(100)#如果输出的结果太大的话会消耗cpu建议小点
'''
方法三:
'''
def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
# 输出前 10 个斐波那契数列
print fib(100)
输出结果:
实例7:
题目:将一个列表的数据复制到另一个列表中。
# --*--coding:utf-8 --*--
'''
将一个列表的数据复制到另一个列表里
'''
a = [1,2,3,4,5,6,7,8,9,0]
b = a[:]
print b
输出结果:
实例8:
题目:输出9*9乘法口诀表。
# --*--coding:utf-8 --*--
'''
需求:99乘法口诀表
思路:分行与列考虑,共9行9列,i控制行,j控制列。
'''
for i in range(1,10):
for j in range(1,10):
result = i * j
print '%d * %d = % - 3d'% (i,j,result)#循环的两个数相乘
print ''#两个循环的间隔
输出结果:
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
实例9:
题目:暂停一秒输出。
# --*--coding:utf-8 --*--
'''
暂停以秒输入
'''
import time
myD = {1:'a', 2:'b', 3:'c', 4:'d', 5:'e', 6:'f', 7:'g'}
for key,value in dict.items(myD):
print key,value
time.sleep(1)#暂停一秒
输出结果:
2 b
3 c
4 d
5 e
6 f
7 g
实例10:
题目:暂停一秒输入。
# --*--coding:utf-8 --*--
'''
暂停一秒输出
'''
import time
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
time.sleep(1)
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
输出结果:
2016-01-10 23:43:18
实例11:
题目:古典问题,有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# --*--coding:utf-8 --*--
'''
需求:一对兔子,从出生后第三个月起每个月都会生出一对兔子,小兔子长到三个月又生一对小兔子。假如兔子不死,问每个月兔子总数。
思路:兔子的规律为数列1,1,2,3,5,8,13,21....
'''
f1 = 1
f2 =2
for i in range(1,21):
print '%12d %12d' % (f1,f2)
if (i % 2) == 0:
print ''
f1 = f1 + f2
f2 = f1 + f2
输出结果:
3 5
8 13
21 34
55 89
144 233
377 610
987 1597
2584 4181
6765 10946
17711 28657
46368 75025
121393 196418
317811 514229
832040 1346269
2178309 3524578
5702887 9227465
14930352 24157817
39088169 63245986
102334155 165580141
实例12:
题目:判断101-200之间有多少个素数,并输出所有素数。
# --*--coding:utf-8 --*--
'''
需求:判断101-200之间的所有素数,并输出
思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
'''
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(0,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print '%-4d' % m
h += 1
if h % 10 == 0:
print ''
leap = 1
print 'The total is %d' % h
输出结果:
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
The total is 48
实例13:
题目:打印出所有的“水印花数”,所谓“水印花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水印花数”,因为153=1的三次方+5的三次方+3的三次方。
# --*--coding:utf-8 --*--
'''
需求:打印所有“水印数”,例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方
思路:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
'''
for n in range(100,1000):
i = n / 100 #百位数
j = n / 10 % 10 #十位数
k = n % 10 #个位数
if n == i ** 3 + j ** 3 + k ** 3:
print n
输出结果:
370
371
407
实例14:
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5.
# --*--coding:utf-8 --*--
'''
需求:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
思路:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
'''
from sys import stdout
n = int(raw_input("input number:"))
print "n = %d" % n
for i in range(2,n + 1):
while n != i:
if n % i == 0:
stdout.write(str(i))
stdout.write("*")
n = n / i
else:
break
print "%d" % n
输出结果:
n = 100
2*2*5*5
实例15:
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-80分之间的用B表示,60分以下的用C表示。
# --*--coding:utf-8 --*--
'''
需求:利用条件运算符的嵌套来完成成绩表。
思路:(a>b)?a:b这是条件运算符的基本例子。
'''
score = int(raw_input('input score:'))
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'D'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'E'
print '%d belongs to %s' % (score,grade)
输出结果:
26 belongs to E
实例16:
题目:输出指定格式的日期。
# --*--coding:utf-8 --*--
'''
输入指定格式的日期
'''
import datetime
if __name__ == '__main__':#输出今日日期,格式为dd/mm/yyyy.更改选项可以查看strftime()方法。
print(datetime.date.today().strftime('%d/%m/%Y'))
#创建日期对象
miyazakiBirthDate = datetime.date(1941, 1, 5)
print(miyazakiBirthDate.strftime('%d/%m/%Y'))
#日期算术运算
miyazakiBirthDextDate = miyazakiBirthDate + datetime.timedelta(days=1)#加一天
print(miyazakiBirthDextDate.strftime('%d/%m/%Y'))
#日期替换
miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)#加一年
print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
输出结果:
05/01/1941
06/01/1941
05/01/1942
实例17:
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# --*--coding:utf-8 --*--
'''
需求:输入一行字符,分别统计出其中英文字母、空格,数字和其他字符的个数。
思路:利用while语句,条件为输入的字符
'''
import string
s = raw_input('input a string:')
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))
输出结果:
char = 10, space = 3,digit = 7,others = 2
实例18:
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+222...2(此时共有5个数相加),几个数相加有键盘控制。
# --*--coding:utf-8 --*--
'''
需求:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
思路:先计算出每一项的值。
'''
Tn = 0
Sn = []
n = int(raw_input('n = :'))
a = int(raw_input('a = :'))
for count in range(n):#先循环计算每一项的值
Tn = Tn + a
a = a * 10
Sn.append(Tn)
print Tn
Sn = reduce(lambda x,y : x + y,Sn)#在计算和
print Sn
输出结果:
a = :6
6
66
666
6666
66666
666666
6666666
66666666
666666666
740740734
实例19:
题目:一个数如果恰好等于它的因子之和,这个数就称为“壳数”。例如6=1+2+3,编程找出1000以内的所有完数。
# --*--coding:utf-8 --*--
'''
需求:找出1000以内的完数,完数就是一个数如果恰好等于它的因子之和,例如:6=1+2+3
思路:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数各个位之和恰等于n,则说明分解质因数的过程已经结束,打印出即可。
'''
from sys import stdout
for j in range(2,1001):
k = []
n = -1
s = j
for i in range(1,j):
if j % i == 0:
n += 1
s -= i
k.append(i)
if s == 0:
print j
for i in range(n):
stdout.write(str(k[i]))
print k[n]
输出结果:
123
28
124714
496
1248163162124248
实例20:
题目:一个球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
# --*--coding:utf-8 --*--
'''
需求:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
'''
Sn = 100.0
Hn = Sn / 2
for n in range(2,11):
Sn += 2 * Hn
Hn /= 2
print 'Total of road is %f' % Sn
print 'The tenth is %f meter' % Hn
输出结果:
The tenth is 0.097656 meter
实例21:
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前天剩下的一半零一个。到第十天早上再想吃时,见剩下一个桃子了。求一天共摘了多少。
# --*--coding:utf-8 --*--
'''
需求:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
思路:采用逆向思维的方法,从后在往前推断
'''
x2 = 1
for day in range(9,0,-1):
x1 = (x2 + 1) * 2
x2 = x1
print x1
输出结果:
实例22:
题目:打印出如下图案(菱形) :
*
***
******
***
*
# --*--coding:utf-8 --*--
'''
需求:打印出如下图案(菱形):
*
********************
***
*
思路:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
'''
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('*')
for i in range(3):
for j in range(i + 1):
stdout.write(' ')
for k in range(4 - 2 * i + 1):
stdout.write('*')
输出结果:
***
*****
*******
*****
***
*
实例23:
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
# --*--coding:utf-8 --*--
'''
需求:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
思路:根据分子和分母的变化可以发现一些规律。(第三个数的分子和分母,是前两个分子和分母之和)
'''
'''
方法一:
'''
a = 2.0
b = 1.0
s = 0
for n in range(1,21):
s += a / b
t = a
a = a + b
b = t
print s
'''
方法二:
'''
a = 2.0
b = 1.0
s = 0.0
for n in range(1,21):
s += a / b
b,a = a , a + b
print s
s = 0.0
for n in range(1,21):
s += a / b
b,a = a , a + b
print s
'''
方法三:
'''
a = 2.0
b = 1.0
l = []
for n in range(1,21):
b,a = a,a + b
l.append(a / b)
print reduce(lambda x,y: x + y,l)
输出结果:
32.6602607986
32.360679776
32.2782947888
实例24:
题目:两个兵乓球队进行比赛,各出三人。甲队为a,b,c三人,乙对为x,y,z三人。以抽签决定比赛名单。有向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程找到三队赛手的名单。
# --*--coding:utf-8 --*--
'''
需求:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
'''
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\t b -- %s\tc -- %s' % (chr(i),chr(j),chr(k))
输出结果:
实例25:
题目:求1+2!+3!+...+20!的和。
# --*--coding:utf-8 --*--
'''
需求:求1+2!+3!+...+20!的和。
思路:此程序只是把累加变成了累乘。
'''
'''
方法一:
'''
n = 0
s = 0
t = 1
for n in range(1,21):
t *= n
s += t
print '1! + 2! + 3! + ... + 20! = %d' % s
''''
方法二:
'''
s = 0
l = range(1,21)
def op(x):
r = 1
for i in range(1,x + 1):
r *= i
return r
s = sum(map(op,l))
print '1! + 2! + 3! + ... + 20! = %d' % s
输出结果:
1! + 2! + 3! + ... + 20! = 2561327494111820313
实例26:
题目:利用递归方法求5!。
# --*--coding:utf-8 --*--
'''
需求:利用递归方法求5!。
思路:递归公式:fn = fn_1*4!
'''
def fact(j):
sum = 0
if j == 0:
sum = 1
else:
sum = j * fact(j - 1)
return sum
for i in range(5):
print '%d! = %d' % (i,fact(i))
输出结果:
1! = 1
2! = 2
3! = 6
4! = 24
实例27:
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
# --*--coding:utf-8 --*--
'''
需求:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
'''
def output(s,l):
if l == 0:
return
print (s[l-1])
output(s,l-1)
s = raw_input('Input a string:')
l = len(s)
output(s,l)
输出结果:
4
4
5
3
2
1
实例28:
题目:有5个人坐在一起,问第五个人多少岁?他说比第四个人大两岁。问第四个人岁数,他说比第三个人大两岁。问第三个人,又说比第二个人大两岁。问第二个人,说比第二个人大两岁。最后问第一个,他说是十岁。请问第五个人多大?
# --*--coding:utf-8 --*--
'''
需求:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
思路:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
'''
def age(n):
if n == 1:
c = 10
else:
c = age(n-1) + 2
return c
print age(5)
输出结果:
实例29:
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
# --*--coding:utf-8 --*--
'''
需求:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
思路:学会分解出每一位数。
'''
x = int(raw_input("input a number:"))
a = x / 10000
b = x % 10000 / 1000
c = x % 1000 / 100
d = x % 100 / 10
e = x % 10
if a != 0:
print "there are 5 ",e,d,c,b,a
elif b != 0:
print "there are 4 ",d,c,b,a
elif c != 0:
print "there are 3 ",e,d,c
elif d != 0:
print "there are 2 ",e,d
else:
print "there are 1",e
输出结果:
there are 5 9 1 8 6 5
实例30:
题目:一个五位数,判断他是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
# --*--coding:utf-8 --*--
'''
需求:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
'''
# x = int(raw_input('input a number:'))
# x = str(x)
# for i in range(len(x)/2):
# if x[i] != x[-i - 1]:
# print '这不是一个回数'
# break
# print '这是一个回数'
x = int(raw_input("input a number:\n"))
x = str(x)
for i in range(len(x)/2):
if x[i] != x[-i - 1]:
print '这不是一个回文数'
break
print '这是一个回文数'
输出结果:
12321
这是一个回文数
实例31:
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
# --*--coding:utf-8 --*--
'''
需求:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
思路:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。
'''
letter = raw_input("please input:")
#while letter != 'Y':
if letter == 'S':
print ('please input second letter:')
letter = raw_input("please input:")
if letter == 'a':
print ('Saturday')
elif letter == 'u':
print ('Sunday')
else:
print ('data error')
elif letter == 'F':
print ('Friday')
elif letter == 'M':
print ('Monday')
elif letter == 'T':
print ('please input second letter')
letter = raw_input("please input:")
if letter == 'u':
print ('Tuesday')
elif letter == 'h':
print ('Thursday')
else:
print ('data error')
elif letter == 'W':
print ('Wednesday')
else:
print ('data error')
输出结果:
please input second letter:
please input:a
Saturday
实例32:
题目:按相反的顺序输出列表的值。
# --*--coding:utf-8 --*--
'''
需求:按相反的顺序输出列表的值。
'''
a = ['one', 'two', 'three']
for i in a[::-1]:
print i
输出结果:
two
one
实例33:
题目:按逗号分隔列表。
# --*--coding:utf-8 --*--
'''
需求:按逗号分隔列表。
'''
L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)
print s1
输出结果:
实例34:
题目:练习函数调用。
# --*--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
实例35:
题目:文本颜色设置。
# --*--coding:utf-8 --*--
'''
需求:文本颜色设置。
'''
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC
输出结果:
实例36:
题目:求100之内的素数。
# --*--coding:utf-8 --*--
'''
需求:求100之内的素数。
'''
from math import sqrt
if __name__ == '__main__':
N = 100
a = range(0,N)
for i in range(2,int(sqrt(N))):
for j in range(i + 1,N):
if (a[i] != 0) and (a[j] != 0):
if a[j] % a[i] == 0:
a[j] = 0
for i in range(2,N):
if a[i] != 0:
print "%5d" % a[i]
if (i - 2) % 10 == 0:
输出结果:
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
实例37:
题目:对100个数进行排序。
# --*--coding:utf-8 --*--
'''
需求:对10个数进行排序。
思路:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
'''
if __name__ == "__main__":
N = 10
# input data
print 'please input ten num:'
l = []
for i in range(N):
l.append(int(raw_input('input a number:')))
for i in range(N):
print l[i]
# 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]
输出结果:
input a number:5
input a number:8
input a number:46
input a number:256
input a number:1
input a number:8
input a number:9
input a number:4
input a number:569
input a number:79
5
8
46
256
1
8
9
4
569
79
after sorted
1
4
5
8
8
9
46
79
256
569
实例38:
题目:求一个3*3的矩阵对角线元素之和。
# --*--coding:utf-8 --*--
'''
需求:求一个3*3矩阵对角线元素之和。
思路:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
'''
if __name__ == '__main__':
a = []
sum = 0.0
for i in range(3):
a.append([])
for j in range(3):
a[i].append(float(raw_input("input num:\n")))
for i in range(3):
sum += a[i][i]
print sum
输出结果:
79
input num:
46
input num:
86
input num:
21
input num:
56
input num:
32
input num:
89
input num:
45
input num:
89
224.0
实例39:
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
# --*--coding:utf-8 --*--
'''
需求:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
思路:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
'''
if __name__ == '__main__':
# 方法一
a = [1,4,6,9,13,16,19,28,40,100,0]
print 'original list is:'
for i in range(len(a)):
print a[i]
number = int(raw_input("insert a new number:\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
for i in range(11):
print a[i]
输出结果:
4
6
9
13
16
19
28
40
100
0
实例40:
题目:将一个数组逆序输出。
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, 4, 5, 6, 9]
实例41:
题目:模仿静态变量的用法。
# --*--coding:utf-8 --*--
'''
需求:模仿静态变量的用法。
'''
def varfunc():
var = 0
print 'var = %d' % var
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
# 类的属性
# 作为类的一个属性吧
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print self.StaticVar
print Static.StaticVar
a = Static()
for i in range(3):
a.varfunc()
输出结果:
var = 0
var = 0
5
6
7
8
实例42:
题目:学习使用auto定义变量的用法。
# --*--coding:utf-8 --*--
'''
需求:学习使用auto定义变量的用法。
思路:没有auto关键字,使用变量作用域来举例吧。
'''
num = 2
def autofunc():
num = 1
print 'internal block num = %d' % num
num += 1
for i in range(3):
print 'The num = %d' % num
num += 1
autofunc()
输出结果:
internal block num = 1
The num = 3
internal block num = 1
The num = 4
internal block num = 1
实例43:
题目:模仿静态变量(static)另一案例。
# --*--coding:utf-8 --*--
'''
需求:模仿静态变量(static)另一案例。
思路:演示一个python作用域使用方法
'''
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print 'nNum = %d' % self.nNum
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print 'The num = %d' % nNum
inst.inc()
输出结果:
nNum = 2
The num = 4
nNum = 3
The num = 5
nNum = 4
实例44:
题目:统计1到100之和。
# --*--coding:utf-8 --*--
'''
需求:统计 1 到 100 之和。
'''
tmp = 0
for i in range(1,101):
tmp += i
print 'The sum is %d' % tmp
输出结果:
实例45:
题目:求输入数字的平方,如果平方运算后小于50则退出。
# --*--coding:utf-8 --*--
'''
需求:求输入数字的平方,如果平方运算后小于 50 则退出。
'''
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
输出结果:
Please input number300
运算结果为 90000
Please input number45
运算结果为 2025
实例46:
题目:连个变量值互换。
# --*--coding:utf-8 --*--
'''
需求:连个变量值互换。
'''
def exchange(a,b):
a,b = b,a
return (a,b)
if __name__ == '__main__':
x = 10
y = 20
print 'x = %d,y = %d' % (x,y)
x,y = exchange(x,y)
print 'x = %d,y = %d' % (x,y)
输出结果:
x = 20,y = 10
实例47:
题目:数字比较。
# --*--coding:utf-8 --*--
'''
需求:数字比较。
'''
if __name__ == '__main__':
i = 10
j = 20
if i > j:
print '%d 大于 %d' % (i,j)
elif i == j:
print '%d 等于 %d' % (i,j)
elif i < j:
print '%d 小于 %d' % (i,j)
else:
print '未知'
输出结果:
实例48:
题目:使用lambda来创建匿名函数。
# --*--coding:utf-8 --*--
'''
需求:使用lambda来创建匿名函数。
'''
MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y
MINIMUM = lambda x,y : (x > y) * y + (x < y) * x
if __name__ == '__main__':
a = 10
b = 20
print 'The largar one is %d' % MAXIMUM(a,b)
print 'The lower one is %d' % MINIMUM(a,b)
输出结果:
The lower one is 10
实例49:
题目:输出一个随机数。
# --*--coding:utf-8 --*--
'''
需求:输出一个随机数。
思路:使用 random 模块。
'''
import random
#生成 10 到 20 之间的随机数
print random.uniform(10, 20)
输出结果: