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

#一个数如果恰好等于其因子之和,则称为完数,如6=1+2+3。找出1000以内所有完数。
"""
思路:1、利用循环,依次查找数值的因数
2、同时对其因数求和,当因数之和大于数值则循环跳出,查找下一个合适数值
3、同时对每个数值的因数存放到列表
4、查到合适数值后输出该数值以及其因数之和表达式
"""
#先定义一个判断是否为质数的函数
import math
def 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 True

for 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=0
space_count=0
number_count=0
other_count=0
for 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+=1
print("这行字符总共包括"+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=0
m=a
print("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+a
print("="+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 n
days=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=0
for 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)*n
s=0
n=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 list
n=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]=a
for i in range(0,len(listb)):
    print(listb[i],end=" ")