#-*- 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)