python下10个简单实例代码
注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!!
1.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
程序源代码:
#-*-coding:UTF-8-*- foriinrange(1,5): forjinrange(1,5): forkinrange(1,5): if(i!=j)and(i!=k)and(j!=k): printi,j,k
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来计算表达式的值,也就是奖金总数。就是把奖金叠加起来,具体算法还是要在纸上计算,这种方法适用于初学编码的人,比如我,用最笨的数学思路解决问题,就是说在数学上你是按照什么方法做的,然后把他转化成代码,就比较容易理解了。
#-*-coding:UTF-8-*-
whileTrue:
I=input("plsinputthelirun:")
ifI<=10:
a=I*0.01
printa
elifI<=20andI>10:
b=0.25+I*0.075
printb
elifI<=40andI>20:
c=0.75+I*0.05
printc
elifI<=60andI>40:
d=0.95+I*0.03
printd
elifI<=60andI>100:
e=2+I*0.015
printe
else:
f=2.95+I*0.01
printf
方法二:这种方法就比较难懂了,适合于基础好的人。
#-*-coding:UTF-8-*-
I=int(raw_input('净利润:'))
#这应该就是各个分界值了,把它们放在列表里方便访问
arr=[1000000,600000,400000,200000,100000,0]
#这是各个分界值所对应的奖金比例值
rat=[0.01,0.015,0.03,0.05,0.075,0.1]
#这是总奖金的初始值
r=0
#有6个分界值当然要循环6次
foridxinrange(0,6):
ifI>arr[idx]:
r=r+(I-arr[idx])*rat[idx]
print(I-arr[idx])*rat[idx]
I=arr[idx]
printr
3.题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?
程序分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。这里要用到数学中的开方函数sqrt。
#-*-coding:UTF-8-*- importmath foriinrange(10000): x=int(math.sqrt(i+100)) y=int(math.sqrt(i+268)) if(x*x==i+100)and(y*y==i+268): printi
4.题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
思路:先把输入的日期进行分割,分割成年,月,日三个数字,再按照实际情况依次编写。
#-*-coding:UTF-8-*-
x=raw_input("请输入日期,比如20160506:")
year=int(x[:4])
month=int(x[4:6])
day=int(x[6:8])
month_day=[31,28,31,30,31,30,31,31,30,31,30,31]
data=sum(month_day[:(month-1)],day)
if(year%4==0andyear%100!=0)or(year%400==0):
ifmonth>2:
data=data+1
print"itisthe%dthday"%(data)
5.题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析一:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
#-*-coding:UTF-8-*-
l=[]
foriinrange(3):
x=int(raw_input('integer:\n'))
l.append(x)#这里用append()函数,意思是追加元素
l.sort()
printl
程序分析二:用一个变量来存储最小值,三个数进行比较后两两交换,这是最常用的思路。
#-*-coding:UTF-8-*-
x=input("inputanum:")
y=input("inputanum:")
z=input("inputanum:")
temp=0
ifx
程序分析三:用函数sort进行排序,sort函数可以把数字按照从小到大的顺序进行重新排列。
#-*-coding:UTF-8-*-
x=input("inputanum:")
y=input("inputanum:")
z=input("inputanum:")
y=[x,y,z]#注意,这里只能是列表,不能是元组,因为元组是不可改变的,你懂得!!
y.sort()
printy
6.题目:将一个列表的数据复制到另一个列表中。
注意:有些同学想到使用append()函数,这里要特别注意,append()函数是每次追加一个元素,如果使用append()函数,会把需要追加的那个列表当成一个数据来使用,不信你看下面这个:
方法一:
#-*-coding:UTF-8-*-
l1=[1,2,3]
l2=[4,5,6]
l1.append(l2)
printl1
输出:[1,2,3,[4,5,6]]
方法二:使用“+”来连接两个列表,即就是把l2列表的数据复制到l1列表中。
#-*-coding:UTF-8-*-
l1=[1,2,3]
l2=[4,5,6]
printl1+l2
输出:[1,2,3,4,5,6]
方法三:使用列表[:]。切片的方法,大家都知道如果不指定start和end,则表示输出该列表的所以元素。
#-*-coding:UTF-8-*-
a=[1,2,3]#把列表a复制到列表b
b=a[:]
printb
7.题目:输出9*9乘法口诀表。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。如果不要求格式的话,就简单了,可以任意格式输出,如下:
#-*-coding:UTF-8-*-
foriinrange(1,10):
forjinrange(1,10):
x=i*j
print"%d*%d=%d"%(i,j,x)
如果需要考虑输出格式,我们后面的文章会讲到,嘿嘿。
8.题目:暂停一秒输出。
程序分析:暂停时间的函数为time.sleep(),此处可随意举例,列表,元组,字典均可。
#-*-coding:UTF-8-*-
importtime
d={"a":1,"b":2}
foriind:
printi
time.sleep(1)#暂停一秒输出
9.题目:斐波那契数列。
程序分析:斐波那契数列(Fibonaccisequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
在数学上,费波那契数列是以递归的方法来定义:
n=1时f(1)=1
n=2时f(2)=1
n=3时f(3)=f(3-1)+f(3-2)
=f(2)+f(1)
=1+1
=2
n=4时f(4)=f(4-1)+f(4-2)
=f(3)+f(2)
=2+1
=3
n=5时f(5)=f(5-1)+f(5-2)
=f(4)+f(3)
=3+2
=5
........
所以,当n>=2时,表达式为f(n)=f(n-1)+f(n-2)
方法一:
#-*-coding:UTF-8-*-
deffib(n):
a,b=1,1
foriinrange(n-1):
a,b=b,a+b
returna
#输出了第10个斐波那契数列
printfib(10)
方法二:
#-*-coding:UTF-8-*-
#使用递归
deffib(n):
ifn==1orn==2:
return1
returnfib(n-1)+fib(n-2)
#输出了第10个斐波那契数列
printfib(10)
方法三:如果你需要输出指定个数的斐波那契数列,可以使用以下代码:
#-*-coding:UTF-8-*-
deffib(n):
ifn==1:
return[1]
ifn==2:
return[1,1]
fibs=[1,1]
foriinrange(2,n):
fibs.append(fibs[-1]+fibs[-2])
returnfibs
#输出前10个斐波那契数列
printfib(10)
10.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:经过计算和寻找规律得到,兔子的规律为数列1,1,2,3,5,8,13,21….典型的斐波那契数列,这就是为什么我要把斐波那契数列数列放在第九题的原因,那么根据上一题的方法三,我们就非常轻松的求得每月兔子的数量。
此外,还有一种比较漂亮的输出:
#-*-coding:UTF-8-*-
f1=1
f2=1
foriinrange(1,21):
print'%12ld%12ld'%(f1,f2),
if(i%3)==0:
print''
f1=f1+f2
f2=f1+f2
输出
112358
1321345589144
23337761098715972584
4181676510946177112865746368
75025121393196418317811514229832040
1346269217830935245785702887922746514930352
241578173908816963245986102334155165580141267914296