100 个 Python 小例子(练习题一)

题目:

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

程序分析:遍历全部可能,把有重复的剃掉。

12345678total=0fori inrange(1,5):    forj inrange(1,5):        fork inrange(1,5):            if((i!=j)and(j!=k)and(k!=i)):                print(i,j,k)                total+=1print(total)

简便方法:itertools中的permutations即可。

1234567importitertoolssum2=0a=[1,2,3,4]fori initertools.permutations(a,3):    print(i)    sum2+=1print(sum2)

实例002:“个税计算”

题目:

企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

程序分析:分区间计算即可。

1234567891011121314profit=int(input('Show me the money: '))bonus=0thresholds=[100000,100000,200000,200000,400000]rates=[0.1,0.075,0.05,0.03,0.015,0.01]fori inrange(len(thresholds)):    ifprofit<=thresholds[i]:        bonus+=profit*rates[i]        profit=0        break    else:        bonus+=thresholds[i]*rates[i]        profit-=thresholds[i]bonus+=profit*rates[-1]print(bonus)

实例003:完全平方数

题目:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

12345678n=0while(n+1)**2-n*n<=168:    n+=1print(n+1)----------85

思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。 至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。

结合起来:

1234567n=0while(n+1)**2-n*n<=168:    n+=1fori inrange((n+1)**2):    ifi**0.5==int(i**0.5) and(i+168)**0.5==int((i+168)**0.5):        print(i-100)

实例004:这天第几天

题目:

输入某年某月某日,判断这一天是这一年的第几天?

程序分析:特殊情况,闰年时需考虑二月多加一天:

123456789101112defisLeapYear(y):    return(y%400==0or(y%4==0andy%100!=0))DofM=[0,31,28,31,30,31,30,31,31,30,31,30]res=0year=int(input('Year:'))month=int(input('Month:'))day=int(input('day:'))ifisLeapYear(year):    DofM[2]+=1fori inrange(month):    res+=DofM[i]print(res+day)

实例005:三数排序

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注