python基础练习题

来源:互联网 发布:网路优化 编辑:程序博客网 时间:2024/06/13 21:22

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

list1 = [1,2,3,4]result = []for x in list1:    for y in list1:        for z in list1:            if x != y and x != z and y != z:                a = x*100+y*10+z                result.append(a)print resultprint len(result)
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 = input("请输入当月利润:") #利润可为整数或浮点数,所以不建议用raw_inputtj = [1000000,600000,400000,200000,100000,0] #条件tc = [0.01,0.015,0.03,0.05,0.075,0.01] #提成reward = 0    #初始化奖金for i in range(6):    if I >= tj[i]:        reward += (I-tj[i])*tc[i]        I = tj[i]print reward
3、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(求1000以内的所有满足条件的数)

from math import sqrtfor z in range(1000):    x = int(sqrt(z+100))    y = int(sqrt(z+100+168))    if x**2 == z+100 and y**2 == z+100+168:        print z

4、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方


for x in range(1,10):    for y in range(10):        for z in range(10):            i = x*100 + y*10 + z            if x**3+y**3+z**3 == i:                print i

5、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。


n = int(raw_input("请输入要分解的正整数:"))num = nfor k in range(2,n):    while n != k:        if n%k == 0:            print "%d*"%k,            n = n/k        else:            breakprint "%d=%d"%(n,num)

6、输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。

最大公约数:指两个或多个整数共有约数中最大的一个
最小公倍数=两数的乘积/最大公约(因)数


m = int(raw_input("请输入正整数m:"))n = int(raw_input("请输入正整数n:"))x = my = nif n>m:    m,n = n,mfor i in range(n):    k = m%n    if k != 0:        m,n =n,kMAXgy = n #最大公约数MINgb = x*y/MAXgy #求最小公倍数print "最大公约数为:" + str(MAXgy)print "最小公倍数为:" + str(MINgb)

7、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
需要输入两个值a和n
提示使用函数,raw_input,input,eval

a = raw_input("请输入计算值a: ")n = input("几个数进行相加? ")str = ""for i in range(1,n+1):    str += a*i+"+"print "%s = %d"%(str[:-1],eval(str[:-1]))

8、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数。


ws = []for n in range(1,1000):    t = []    for i in range(1,n):        if n%i == 0:            t.append(i)    if sum(t) == n:        ws.append(n)      print ws

9、利用循环输出一个菱形图案:


x = int(raw_input("最大宽度几颗星:"))for i in range(x):    print " "*(x-i-1),"* "*(i+1)for j in range(x):    print " "*(j+1),"* "*(x-j-1)



原创粉丝点击