"""
实例1
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是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 j!=k):
print (i,j,k)
输出结果:
1 2 3
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
# -*- coding: utf-8 -*-
"""
实例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%提成,从键盘输入当月利润I,求应发放奖金总数?
"""
i=int(input('利润:'))
if i<=0:
print( False)
elif i<=100000:
p=i*0.1
elif i<=200000:
p=(i-100000)*0.075+100000*0.1
elif i<=400000:
p=(i-200000)*0.05
elif i<=600000:
p=(i-400000)*0.03
elif i<=1000000:
p=(i-600000)*0.015
else:
p=(i-1000000)*0.01
print (p)
输出结果:
runfile('F:/lihuiyan/python/example1.py', wdir='F:/lihuiyan/python')
利润:120000
11500.0
# -*- coding: utf-8 -*-
"""
实例3
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:
假设该数为 x。
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
"""
for i in range(1,85):
if 168%i==0:
j=168/i
if i>j and (i+j)%2==0 and (i-j)%2==0:
m=(i+j)/2
n=(i-j)/2
x=n*n-100
print(x)
输出结果:
-99.0
21.0
261.0
1581.0
#实例4
#输入某年某月某日,判断这一天是这一年的第几天?
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#判断闰年的方法:四年一闰,百年不闰,400年一闰
year=int(input('year:'))
month=int(input('month:'))
day=int(input('day:'))
months=[31,28,31,30,31,30,31,31,30,31,30,31]
months_1=[31,29,31,30,31,30,31,31,30,31,30,31]
days=0
#判断是否为闰年
if year%4==0 or year%400==0 and year % 100!= 0:
for i in range(0,month-1):
days+=months_1[i]
else:
for i in range(0,month-1):
days+=months[i]
days=days+day
print(days)
输出结果:
year:2015
month:6
day:7
158
#实例5
#对输入的三个数进行大小比较,并按从小到大的顺序进行排列
l=[];
for i in range (3):
x=int(input('输入一个整数:'))
l.append(x)
l.sort()
print(l)
输出结果:
输入一个整数:6
输入一个整数:7
输入一个整数:5
[5, 6, 7]
#实例6
#斐波那契数列
def fib(n):
if n<0:
return False
if n==0 or n==1:
return n
else:
return fib(n-1)+fib(n-2)
print(fib(10))
输出结果:55
#实例7
#将一个列表复制到另一个列表
a=[1,2,3]
b=a[:]
print('b=',b)
输出结果:
b= [1, 2, 3]
#实例8
#9*9乘法口诀
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d= %d'%(j,i,i*j) ,end=' ')
print()
输出结果:
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4= 12 4*4= 16
1*5= 5 2*5= 10 3*5= 15 4*5= 20 5*5= 25
1*6= 6 2*6= 12 3*6= 18 4*6= 24 5*6= 30 6*6= 36
1*7= 7 2*7= 14 3*7= 21 4*7= 28 5*7= 35 6*7= 42 7*7= 49
1*8= 8 2*8= 16 3*8= 24 4*8= 32 5*8= 40 6*8= 48 7*8= 56 8*8= 64
1*9= 9 2*9= 18 3*9= 27 4*9= 36 5*9= 45 6*9= 54 7*9= 63 8*9= 72 9*9= 81
#实例9
#暂停1秒输出九九乘法口诀
import time
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d= %d'%(j,i,i*j) ,end=' ')
time.sleep(1)
print()
输出结果:
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4= 12 4*4= 16
1*5= 5 2*5= 10 3*5= 15 4*5= 20 5*5= 25
1*6= 6 2*6= 12 3*6= 18 4*6= 24 5*6= 30 6*6= 36
1*7= 7 2*7= 14 3*7= 21 4*7= 28 5*7= 35 6*7= 42 7*7= 49
1*8= 8 2*8= 16 3*8= 24 4*8= 32 5*8= 40 6*8= 48 7*8= 56 8*8= 64
1*9= 9 2*9= 18 3*9= 27 4*9= 36 5*9= 45 6*9= 54 7*9= 63 8*9= 72 9*9= 81
#实例10
#暂停1秒输出,并格式化当前时间
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())))
输出结果:
2018-11-28 20:07:05
2018-11-28 20:07:06
'''
实例11
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
'''
def fib(n):
if n==1 or n==2:
return 1
else:
return fib(n-1)+fib(n-2)
n=int(input("输入一个月份:"))
print('%d 月份的兔子数为 %d' %(n,fib(n)))
输出结果:
输入一个月份:6
6 月份的兔子数为 8
'''
实例12
判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
如果能被整除,则表明此数不是素数,反之是素数。
'''
#import math
#def analyze_primes(n):
# x=math.ceil(math.sqrt(n))
# for i in range(2,x):
# if n%i==0:
# print("%d is not a prime" % n)
# break
# else:
# print(" %d is a prime number!" % n)
#
#
#
#
#for i in range(101,201):
# analyze_primes(i)
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,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)
输出结果:
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
The total is 21
'''
实例13
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
'''
for i in range(100,1000):
x=int(i/100)
y=int((i-x*100)/10)
z=int(i-x*100-y*10)
if x**3+y**3+z**3==i:
print(i)
输出结果:
153
370
371
407