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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章