Python基础习题(二)

来源:互联网 发布:网络平台建设方案 编辑:程序博客网 时间:2024/05/21 18:33

9、一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。

#一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。"""思路:1、利用循环,依次查找数值的因数2、同时对其因数求和,当因数之和大于数值则循环跳出,查找下一个合适数值3、同时对每个数值的因数存放到列表4、查到合适数值后输出该数值以及其因数之和表达式"""#先定义一个判断是否为质数的函数import mathdef isPrime(n):    if n<2:        return False    elif n==2:        return True    else:        m=int(math.sqrt(n))        for i in range(2,m+1):            if n%i==0:                return False    return Truefor n in range(1,1001):    #如果为质数或1,则不符合,因为质数!=1+质数本身    if isPrime(n) or n==1:        continue    else:        #创建存放因数的列表        list=[]        sum=0        #查找n的因数        for i in range(1,n):            if i==1 or n%i==0:                sum=sum+i                list.append(i)                #如果因数之和已大于数值本身则跳出该内循环                if sum>n:                    break        if n==sum:            print(str(n)+"=",end="")            for i in range(0,len(list)):                if i<len(list)-1:                    print(str(list[i])+"+",end="")                else:                    print(list[i],end="")            print()   

10、利用条件运算符的嵌套来完成:成绩>=90分的同学用A表示,60-89之间的用B表示低于60份的用C表示。

"""利用条件运算符的嵌套来完成:成绩>=90分的同学用A表示,60-89之间的用B表示低于60份的用C表示"""score=int(input("请输入成绩(0-100):"))score_level='A' if score>=90 else ('B' if 60<=score<90 else 'C')print(score_level)

注意条件运算符的嵌套用法。

11、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数并输出。

"""输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数并输出"""str0=input("请输入一行字符串:")letter_count=0space_count=0number_count=0other_count=0for c in str0:    if 'a'<=c<='z' or 'A'<=c<='Z':        letter_count+=1    elif c==" ":        space_count+=1    elif 0<=int(c)<=9:        number_count+=1    else:        other_count+=1print("这行字符总共包括"+str(letter_count)+"个字母,",end="")print(str(space_count)+"个空格,",end="")print(str(number_count)+"个数字,",end="")print(str(other_count)+"个其他字符,",end="")

12、求s=a+aa+aaa+aaaa+….;其中加几次由键盘输入指定。

"""求s=a+aa+aaa+aaaa+....;其中加几次由键盘输入指定"""n=int(input("请输入相加的次数:"))a=int(input("请输入一个正整数(1-9):"))s=0m=aprint("s=",end="")for i in range(1,n+1):    if i==n:        print(str(m),end="")    else:        print(str(m)+"+",end="")                s=s+m    m=m*10+aprint("="+str(s))

13、猴子吃桃问题:猴子第一天摘下一堆桃子,吃了一半后又吃了一个;第二天又吃了剩下的一半后又吃了一个;每天都如此吃法,到第十天再想吃时发现只剩一个桃子了,请问第一天共摘了多少只桃子?

def monkeyEatpeach(days,left_count):    n=left_count    for i in range(1,days):        n=(n+1)*2    print("第一天摘的桃子数量是:"+str(n)+"只")    return ndays=int(input("请输入最后一天是第几天:"))left_count=int(input("请输入最后一天发现还剩几只桃子:"))monkeyEatpeach(days,left_count)

14、有一个分数序列:2/1、3/2、5/3、8/5、13/8、21/13….求这个序列前20项之和。

#建立两个列表,分别以分子和分母为元素a=[]b=[]a.append(2.0)a.append(3.0)b.append(1.0)b.append(2.0)for i in range(2,20):    a.append(a[i-1]+a[i-2])    b.append(b[i-1]+b[i-2])s=0for i in range(0,20):    s=s+float(a[i]/b[i])    print(str(s),end="  ")print()print("结果为:"+str(s))

15、求1+2!+3!+4!+…+20!的和。

#求1+2!+3!+4!+...+20!的和。def f1(n):    if n==1:        return 1    else:        return f1(n-1)*ns=0n=int(input("请输入要进行逐数阶乘相加的次数:"))for i in range(1,n+1):    s=s+f1(i)    if i<n:        print(str(i)+"!+",end="")    else:        print(str(i)+"!=",end="")print(s)

16、对10个数进行排序

#对10个数进行排序def listInputinfo(n):    list=[]    for i in range(0,n):        print("\n请输入第"+str(i+1)+"个数:",end="")        e=int(input())        list.append(e)    return listn=int(input("请输入要排序的数字数量:"))#直接利用列表升序函数lista=listInputinfo(n)lista.sort()for i in range(0,len(lista)):    print(lista[i],end=" ")#方法二listb=listInputinfo(n)for i in range(0,len(listb)-1):    for j in range(i+1,len(listb)):        if listb[i]>listb[j]:            a=listb[i]            listb[i]=listb[j]            listb[j]=afor i in range(0,len(listb)):    print(listb[i],end=" ")
0 0
原创粉丝点击