python 练手小作业

#-*- coding:utf-8 -*-
import sys,os
print("1.题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?")
digital=[1,2,3,4]
three_digital=[]
for i in digital:
    for j in digital:
        for k in digital:
            if (i!=k and j!=k and i!=j):
                three_digital.append(i*100+j*10+k)
print("三位数个数:",len(three_digital))
print("三位数分别是:",three_digital)

print("2.题目:企业发放的奖金根据利润提成。\n利润(I)低于或等于10万元时,奖金可提10%;\n利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;\n20万到40万之间时,高于20万元的部分,可提成5%;\n40万到60万之间时高于40万元的部分,可提成3%;\n60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?")
lr = int(input("利润金额:"))
lr_list =[1000000,600000,400000,200000,100000,0]
rate =[0.01,0.015,0.03,0.05,0.075,0.1]

#lr_list =[0,100000,200000,400000,600000,1000000]
#rate =[0.1,0.075,0.05,0.03,0.015,0.01]
r =0
for i in range(0,6):
    if lr>lr_list[i]:
        r+=(lr-lr_list[i])*rate[i]
        print((lr-lr_list[i])*rate[i])
        lr=lr_list[i]
print(r)


print ("3.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?")
# 1、则:x + 100 = n2, x + 100 + 168 = m2
# 2、计算等式:m2 - n2 = (m + n)(m - n) = 168
# 3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
# 4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
# 5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
# 6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。

for i in range(1,85):
    if 168%i==0:
        j=168/i
        if i>j and (i+j)%2 ==0 and (i-j)%2==0:
            m=(i+j)/2
            n=(i-j)/2
            x=n*n-100
            print(x)
			
			
print("4.题目:输入某年某月某日,判断这一天是这一年的第几天")
#程序分析:以3月5日为例,应该先把前两个月的加起来,
#然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一
year = int(input("年:"))
month = int (input("月:"))
day = int(input("日:"))
months =(0,31,59,90,120,151,181,212,243,273,304,334)
if 0<month<=12:
    sum = months[month-1]
else:
    print ("data erro")
sum +=day
leap =0
if (year%400 ==0) or (year%4==0) and (year%100!=0):
    leap =1
if (leap==1) and (month>2):
    sum+=1
print("一年中的第%s天"%sum)


print("5.题目:输入三个整数x,y,z,请把这三个数由小到大输出。")
#程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
#x,y,z=int(input('x:')),int(input('y:')),int(input('z:'))
#冒泡排序
#输入 三个数
digital_list=[]
k=int(input("输入需要排序的数字的总个数:"))
n=0
while len(digital_list)<k:
    n+=1
    digital = int(input("输第%s个数:"%n))
    digital_list.append(digital)
	
#digital_list=[12,13,28,90,21,45,32]
for i in range(0,len(digital_list)-1):
    for j in range(0,len(digital_list)-1):
        if digital_list[j]<digital_list[j+1]:
            tmp=digital_list[j]
            digital_list[j]=digital_list[j+1]
            digital_list[j+1]=tmp
print("降序排列结果:",digital_list)


for i in range(0,len(digital_list)-1):
    for j in range(0,len(digital_list)-1):
        if digital_list[j]>digital_list[j+1]:
            tmp=digital_list[j]
            digital_list[j]=digital_list[j+1]
            digital_list[j+1]=tmp
print("升序排列结果:",digital_list)


print("6.题目:斐波那契数列。")
# 程序分析:斐波那契数列(Fibonacci sequence),
# 又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
# 在数学上,费波那契数列是以递归的方法来定义:
def fib(n):
    if n==1:
        return [0]
    if n==2:
        return [0,1]
    l=[0,1]
    for i in range(2,n):
        temp=l[i-1]+l[i-2]
        l.append(temp)
        i+=1
    return l
if __name__=="__main__":
    nx = int(input("输入需要列出的数列个数:"))
    print(fib(nx))

# 使用递归
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)
 
# 输出了第10个斐波那契数列
print fib(10)

print("7.题目:将一个列表的数据复制到另一个列表中。")
#程序分析:使用列表[:]。
l1=[1,2,3]
l2=[4,5,6,7]
l3=[]
#将L1的数据追加到L2中
for i in range(3):
    l2.append(l1[i])
print("L2:",l2)
#直接使用[:]将L1的数据复制到L3中
l3= l1[:]
print("L3:",l3)


print("8.题目:输出乘法口诀表。")
row=[1,2,3,4,5,6,7,8,9]
col=[1,2,3,4,5,6,7,8,9]
for i in range(0,9):
    print("")
    for j in range(0,i+1):
        print ("%sx%s=%s"%(col[j],row[i],row[i]*col[j]),end='\t')
row=[1,2,3,4,5,6,7,8,9]
col=[1,2,3,4,5,6,7,8,9]
a4=9
while a4>0:
    col1=col[a4-1]
    print("")
    for i in range(0,a4):
        print ("%sx%s=%s"%(row[i],col1,row[i]*col1),end='\t')
    a4=a4-1
print ("\n==================================================")
for i in range(1,10):
    print("    ")
    for j in range(1,i+1):
        print("{}x{}={}".format(j,i,i*j),end='\t')
print("\n========================================")
s=1
while s<=9:
    a = 1
    while (a<=s):
        a1=a
        a2=s
        print("%s*%s=%s"%(a1,a2,a1*a2),end='\t')
        a += 1
    print()
    s+=1
print("\n========================================")
s = 9
while s>0:
    a = 1
    while (a<=s):
        a1=a
        a2=s
        print("%s*%s=%s"%(a1,a2,a1*a2),end='\t')
        a += 1
    print()
    s = s - 1
	
print("9.题目:暂停一秒输出")
import time
er={1:'a',2:'b',3:'c',4:'d',5:'e'}
for key,value in er.items():
    print (key,value)
    time.sleep(3)
	

print("10.题目:暂停一秒输出,并格式化当前时间。")
import time
import datetime
nowtime= time.time()
print(nowtime)
time.sleep(1)
print(datetime.datetime.fromtimestamp(nowtime))
time.sleep(1)
print(time.strftime("%Y/%m/%d %H:%M:%S",time.localtime()))

print("11.题目:古典问题:有一对兔子,\n从出生后第3个月起每个月都生一对兔子,\n小兔子长到第三个月后每个月又生一对兔子,\n假如兔子都不死,\n问每个月的兔子总数为多少?")
#程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
# 1月-1对--1
# # 2月-(1)对--1
# # 3月-(1)+1对新1--2
# # 4月-(2)+1对新1--3
# # 5月-(3)+2对新2--5
# # 6月-(5)+3对新3--8
# # 7月-(8)+5对新4--13
#num=[1,1,2,3,5,8,13....]
m=int(input("输入月数:"))
num=[1,1]
for i in range(1,m+1):
    if i <=2:
        print(num[i-1],end='\t')
        #if m == 1:
            #print("第%s个月兔子对数为:%s" % (m, num[0]))
        #else:
            #print("第2个月兔子对数为:%s" % num[1])
    else:
        num3=(num[i-2]+num[i-3])
        num.append(num3)
        print(num[i-1], end='\t')
    i+=1
print("\n第%s个月后兔子的对数为:%s"%(i-1,num[-1]),end='\t\n')


print("12.题目:判断101-200之间有多少个素数,并输出所有素数。")
#程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
#什么是素数?就是质数,只能被1和本身整除的数
#按质数的定义实现
num=101
sushu=[]
while num<=200:
    sum = []
    i=1
    while i<=num:
        if num%i==0:
            sum.append(i)#将能被整除的数加入到sum[]中
        i+= 1
    if len(sum)==2:#sum的长度为2说明该数字只能被两个数整除,这两个数即是1和他本身
        sushu.append(num)
    num+=1
print ("101-200之间的质数有%s个,他们分别为:%s"%(len(sushu),sushu))

print("""13.题目:打印出所有的"水仙花数",\n所谓"水仙花数"是指一个三位数,\n其各位数字立方和等于该数本身。\n例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。""")
#程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
shui=[]
for i in range(100,999):
    m=i//100
    n=(i-m*100)//10
    k=i%10
    if m*m*m+n*n*n+k*k*k==i:
        shui.append(i)
print("水仙花数:",shui)


print("14.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。")
def reduceNum(n):
    print("{}=".format(n),end='\t')
    if not isinstance(n,int) or n<=0:
        print("请输入一个正确的数!")
        exit(0)
    elif n in [1]:
        print("{}".format(n))
    while n not in [1]:#保证循环递归
        for index in range(2,n+1):#从2 开始穷举能被要分解质因数的数整除的数
            #print(type(index))
            if n%index==0:#如果能被整出
                n=n/index#计算整除后的商,后续继续将该值进行质因数分解,进行循环操作直至n=1
                n=int(n)
                #print("n的值为:",n)
                if n==1:
                    print('{}*1'.format(index))
                else:#index一定是素数
                    print("{}*".format(index),end='\t')
                break
if __name__=="__main__":
    num=int(input("please input the number:"))
    reduceNum(num)


print("15.题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,\n60-89分之间的用B表示,60分以下的用C表示。")
#程序分析:程序分析:(a>b)?a:b这是条件运算符的基本例子
scores ={'张三':56,'李四':78,'王五':90,'王二':65}
for key,values in scores.items():
    if values>=90:
        print('%s的成绩为:A'%key)
    elif values>=60:
        print('%s的成绩为:B'%key)
    else:
        print('%s的成绩为:C'%key)

score = int(input('输入分数:\n'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'

print('%d 属于 %s' % (score, grade))


print("16.题目:输出指定格式的日期。")
#程序分析:使用 datetime 模块

import datetime
import time
now=time.localtime()
print(now)
now1=datetime.date.today().strftime('%Y-%m-%d')
print(now1)
now2=datetime.datetime.today().strftime('%m-%d-%Y %H:%M:%S')
print(now2)
#创建日期对象
now3=datetime.date(1989,12,19)
#日期算术运行
now5=now3+datetime.timedelta(days=365)
#日期替换
now6=now3.replace(year=now3.year+30)
print('now6:',now6)
print(now3.strftime('%Y-%m-%d'))
now4=time.localtime()
print(time.strftime('%Y/%m/%d',now))

print(now5)


print("17.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。")
str1=input("输入一串字符:")
print(list(str1))
digitnum=0
alphanum=0
stnum=0
spacenum=0
for i in range(0,len(str1)):
    if str1[i].isdigit():
        digitnum+=1
    elif str1[i].isspace():
        spacenum+=1
    elif str1[i].isalpha():
        alphanum+=1
    else:
        stnum+=1
print("字母个数:%s\t数字个数:%s\t符号个数:%s\t空格个数:%s"%(alphanum,digitnum,stnum,spacenum))

from functools import reduce
print("18.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。\n例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。")
#程序分析:关键是计算出每一项的值.
numbers=int(input('输入需要相加的数目个数:'))
a=int(input("输入需要进行该运算的数字:"))
sum1=[a]
s=a
print('{}'.format(a),end='\t')
for i in range(1,numbers):
    s=s+a*(10**i)
    sum1.append(s)
    print('+',end='\t')
    print('{}'.format(s),end='\t')
#print(sum)
allsum=0
for j in range(0,len(sum1)):
    allsum+=sum1[j]
print('={}'.format(allsum),end='\t')
#直接使用已有函数进行求和计算
allsum2= reduce(lambda x,y:x+y,sum1)
allsum3= sum(sum1)
print ('\nreduce()求和为:',allsum2)
print ('\nsum()求和为:',allsum3)



print("19.题目:一个数如果恰好等于它的因子之和,\n这个数就称为'完数'。\n例如6=1+2+3.编程找出1000以内的所有完数。")
import copy
#程序分析,先将该数的所有约数找出,除去本身以外的约数进行求和计算。
def fenjie_sum(j):
    fenjie_list=[1]
    for i in  range(2,j+1):
        if j%i==0:#穷举该数整除的数
            if j/i!=1:#排除该数本身的约数
                fenjie_list.append(i)#将所有约数添加到list中
    #print(fenjie_list)
    return sum(fenjie_list)
if __name__=="__main__":
    m=1
    while m<=1000:
        m+=1
        n=fenjie_sum(m)
        if n==m:
            print(m)
print("========================")
for k in range(2,1000):
    fenjie_list2=[1]
    for l in range(2,k+1):
        if k%l==0:
            if k/l!=1:
                fenjie_list2.append(l)
    if sum(fenjie_list2)==k:
        print(k)
        print(fenjie_list2)
	
print("20.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?")
# high1=100
# #每次弹起的高度即落下的高度减半
# # 1---50 第一次弹起的高度
# # 2---25  第一次的弹起的高度的基础上落下再进行弹起再次减半,也就是第一次弹起高度的基础上减半
# i=1
# while i<=10:
#     high1=high1/2
#     i+=1
# print("第10次弹起的高度为:%s"%(high1))
# #第十次落地时共走过的路程,从第一次落地开始算
# # 1---100
# # 2---100+50+50 第二次落地即使第一次弹起再落地,即使+上两倍第一次弹起的高度
# # 3---100+(50+50)+(25+25) 第二次落地的基础上弹起后再落地即第三次落地
high2=100
high3=100
j=1
while j<=10:
    #print(high2,'----第%s次落地经过路程'%j)
    high3=high3/2 #落地后弹起的高度
    #print(high3,'----%s次弹起'%j)
    if j==10:
        print("第10次弹起的高度为:%s"%high3)
    j+=1
    high2 = high2 + 2 * high3  # 反弹的高度要乘以2,因为要弹起,然后再才会落下
    if j==10:
        print("第10次落地球共经过的路程为:%s"%high2)
		
print("21.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,\n当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,\n又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。\n到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。")
#程序分析:采取逆向思维的方法,从后往前推断。
# 桃子 x 个
# 1---x/2-1
# 2---(x/2-1)/2-1
# 3---((x/2-1)/2-1)/2-1
# 8-----   (m+1)*2   #
# 9---- (1+1)*2 =m
#10-----1
j=1 #第十天剩余的个数
i=1
while i <10:
    j=(j+1)*2
    i+=1
print("桃子总个数为:",j)

print("22.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,\n乙队为x,y,z三人。已抽签决定比赛名单。\n有人向队员打听比赛的名单。\na说他不和x比,c说他不和x,z比,\n请编程序找出三队赛手的名单。")
#i,j,k i为a对手,j为b的对手,k为z的对手
for a in range(ord('x'),ord('z')+1):
     for b in range(ord('x'),ord('y')+1):
         if a!=b:
             for c in range(ord('x'),ord('z')+1):
                 if b!=c and c!=a:
                     if a!=ord('x') and c!=ord('x') and c!=ord('z'):
                         print("a:%s \t b:%s \t c:%s"%(chr(a),chr(b),chr(c)))
						 
						 
print("23.题目:打印出如下图案(菱形)")
#
#    *
#   ***
#  *****
# *******
#  *****
#   ***
#    *
for i in range(0,7,2):
    print(((i+1)*'*').center(10),end='\n')
for j in  range(5,0,-2):
    print((j*'*').center(10),end='\n')

	
print("24.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。")
#程序分析:请抓住分子与分母的变化规律。
#a1=2/1  f1/m1
#a2=3/2  f2/m2
#a3=5/3  (m+n)+m/m+n
#a4=8/5
#a5=13/8
#a6=21/13
f =[2,3]
m =[1,2]
#所有分子或者分母的序列为斐波那契数列
for i in range(2,20):
    fn=f[i-1]+f[i-2]
    mn=m[i-1]+m[i-2]
    f.append(fn)
    m.append(mn)
#print("分子:",f)
#print('分母:',m)
s=0
for i in  range(0,20):
    s+=(f[i]/m[i])
print("前20项之和为:",s)

print("======================")
a=1
b=2
s1=2/1
for i in range(1,20):
    a,b=b,b+a#赋值运算,先计算右边的值结果,再将右边的结果复制给左边的参数。
    s1=s1+b/a
print("前20项之和为:",s1)

print("25.题目:求和1+2!+3!+4!+...+20!")
s=0
a=1
for i in range(1,21):
    a = a * i
    s=s+a
print("和为:",s)

print("26.题目:利用递归方法求5!。")
#程序分析:递归公式:fn=fn_1*4!"
print("普通方法====================")
s=1
n=1
while n<=5:
    s=s*n
    n+=1
print (s)
print("递归方法==========有啥区别??")
#递归函数比较耗费内存资源,因为递归时计算得到的值会先存放到堆栈中(即返回值压栈),递归完成退出后才会从堆栈中取出值进行最终的计算,相对来说没有循环来的快
#递归未必效率低;递归的问题是:每次递归函数参数压栈,递归太深,会使栈溢出
def fact(j):
    if j==0:
        sum=1
    else:
        sum=j*fact(j-1)
        print(j)
    return sum
print(fact(5))





print("27.题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。")

def printer(s):
    if len(s) ==1:
        print(s)
    else:
        print(s[-1])
        x = s[:-1]
        printer(x)
    return

if __name__=="__main__":
    s=input()
    printer(s)

#	======================
def output(s,l):
    if l==0:
       return
    print (s[l-1])
    output(s,l-1)
 
s = input('Input a string:')
l = len(s)
output(s,l)

print("28.题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。\n问第4个人岁数,他说比第3个人大2岁。\n问第三个人,又说比第2人大两岁。问第2个人,\n说比第一个人大两岁。\n最后问第一个人,他说是10岁。请问第五个人多大?")
#程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

def old(t,i):
    if i==1:
        print(t)
    else:
        t=t+2
        i-=1
        old(t,i)
if __name__=="__main__":
    x=old(10,5)
#  ===========
def age(n):
    if n == 1: c = 10
    else: c = age(n - 1) + 2
    return c
print( age(5))


print("29.题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。")
#12345
def numbers(s):
    for i in range(1,6):
        x=s//(10**i)#取整,整数商为0时判断数的位数
        if x==0:
            print ("这一个%s位数:"%(i),end='\t')
            return i #return函数中断for循环,且返回i的值即输入的数的位数

s = int(input("输入一个不多于5位的正整数:"))
i=numbers(s)
x=str(s)#将输入的5位数转为str类型使用list索引进行逆序输出
for j in range(i-1,-1,-1):
    print (x[j],end='\t')

x = int(input("请输入一个数:\n"))
a1 = x / 10000
b1= x % 10000 / 1000
c1 = x % 1000 / 100
d1 = x % 100 / 10
e1 = x % 10
a=int(a1)
b=int(b1)
c=int(c1)
d=int(d1)
e=int(e1)
if a != 0:
    print("5 位数:", e, d, c, b, a)
elif b != 0:
    print("4 位数:", e, d, c, b,)
elif c != 0:
    print("3 位数:", e, d, c)
elif d != 0:
    print("2 位数:", e, d)
else:
    print("1 位数:", e)
	
print("30.题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。")
s=input("输入一个5位数:")
if s[0]==s[4] and s[1]==s[3]:
    print("输入数字:%s 是回文数!"%s)
else:
    print("输入的%s不是回文数" % s)

print("通过计算方式=================")
s2=int(input("输入一个5为数"))
a=s2%10 #个位数
b=(s2-a)%100//10  #十位数
c=(s2-a-b*10)%1000//100 #百位数
d=(s2-a-b*10-c*100)%10000//1000#千位数
e=(s2-a-b*10-c*100-d*1000)//10000 #万位数

print(a,b,c,d,e)
if a==e and b==d:
    print("输入的%s是回文数"%s2)
else:
    print("输入的%s不是回文数"%s2)



print("31.题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母")
#程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。
#Sunday Monday  Tuesday Wednesday Thursday Friday Sturday
letter = input("please input:")
# while letter  != 'Y':
if letter == 'S':
    print('please input second letter:')
    letter = input("please input:")
    if letter == 'a':
        print('Saturday')
    elif letter == 'u':
        print('Sunday')
    else:
        print('data error')

elif letter == 'F':
    print('Friday')

elif letter == 'M':
    print('Monday')

elif letter == 'T':
    print('please input second letter')
    letter2 = input("please input:")
    if letter2 == 'u':
        print('Tuesday')
    elif letter2 == 'h':
        print('Thursday')
    else:
        print('data error')

elif letter == 'W':
    print('Wednesday')
else:
    print('data error')
	
	
print("32.题目:按相反的顺序输出列表的值。")
print("s=[1,2,3,4,5]")
s=[1,2,3,4,5]
for i in range(4,-1,-1):
    print(s[i],end="\t")
print("\n")
for j in s[::-1]:
    print(j,end='\t')

print("\n")
s.reverse()#对S进行逆序操作
for k in s:
    print(k,end='\t')

print("33.题目:按逗号分隔列表。")
L=[1,2,3,4,5]
s1=",".join(str(n) for n in L) #join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
print(s1)
s2 = '-'.join(str(k) for k in L)
print(s2)


print("35.题目:文本颜色设置。")
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN ='\033[92m'
    WARNING ='\033[93m'
    FAIL = '\033[91m'
    ENDC ='\033[0m'
    BOLD ='\033[1m'
    UNDERLINE = '\033[4m'
print (bcolors.OKGREEN+"警告颜色的字体?"+bcolors.ENDC+"#不知道什么颜色")


print("36.题目:求100以内的素数")
for i in range(2,100):
        for j in range(2,i):
            if (i%j)==0:#此处循环种判断如果2到i之间的数出现能被j整除,则该数一定不是质数,循环中断.
                break
        else:#此处else的用法,else在try except时也可以类似这种用法,
            print(i,end='\t')
			

print("37.题目:对10个数进行排序。")
#digital_list=[]
#s=[1,3,4,5,8,8,0,7,5,2]
s=[]
for m in range(0,10):
    s.append(int(input("输入第%s个数:"%(m+1))))
for i in range(0,9):
    for j in range(0,9):
        if s[j]<s[j+1]:
            tmp = s[j+1]
            s[j+1]=s[j]
            s[j]=tmp
print("降序排列结果:",s)


print("38.题目:求一个3*3矩阵主对角线元素之和。"
      "程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。")
#矩阵如下
# 1 2 3
# 4 5 6
# 7 8 9
#输入矩阵,二维数组
matrix = []
for i in range(3):
    matrix_inner = []
    for k in range(3):
        num = int(input("输入数字9个创建矩阵list:"))
        matrix_inner.append(num)
    matrix.append(matrix_inner)
#显示矩阵
for k in matrix:
    print(k)
#计算右斜对对角线的和,即主对角线
sum1 = 0
for i in range(3):
    sum1 += matrix[i][i]
print("该矩阵右斜对角线之和为",sum1)

#计算左斜对角线的和
sum2 = 0
k=2
for i in range(3):
    sum2 += matrix[i][k]
    k -= 1
print("矩阵左斜对角线和",sum2)
sum = sum1 + sum2 - matrix[1][1]
print(sum)

猜你喜欢

转载自blog.csdn.net/dance117/article/details/100903413