2016年8月25日 星期四

python 程式設計50題測試範例-17

17、試設計一程式可以比較一組資料(小於 10000 之正整數)中,
       任意一位(或數位數)之大小。
       輸入資料:任意一組小於 10000 之正整數,及所欲比較之位數 N
                 ( 1 < N < 4 )
       輸出資料:照條件敘述列印出來
                 這個條件要包含:
                1)由大而小列印出來
                2)由小而大列印出來
                3)第 N 位數之最大者
                4)第 N 位數之最小者
                5)取任意連續二項而比較其大小
                6)取任意連續三項而比較其大小
       例:輸入資料  0237 0126 3175 1167
           輸出條件                             輸出資料
          1)由小而大列印出來      0126 0237 1167 3175
          2)第三位數之最小者      0126
          3)第一位數之最大者      3175
          4第二,三位數之最大者  0237(即比較 23> 12> 17> 16 之大小)



範例一
輸入
0237
0126
3175
1167
輸出
(1) 0126 0237 1167 3175
(2) 0126
(3)3175
(4)0237
程式:
#coding=utf8

#17、試設計一程式可以比較一組資料(小於 10000 之正整數)中,
#       任意一位(或數位數)之大小。
#       輸入資料:任意一組小於 10000 之正整數,及所欲比較之位數 N
#                 ( 1 < N < 4 )
#       輸出資料:照條件敘述列印出來
#                 這個條件要包含:
#                (1)由大而小列印出來
#                (2)由小而大列印出來
#                (3)第 N 位數之最大者
#                (4)第 N 位數之最小者
#                (5)取任意連續二項而比較其大小
#  

print(" ===========python 程式設計50題測試範例-17============= ")
print("17、試設計一程式可以比較一組資料(<10000之正整數)中")
print("    ,任意一位(或數位數)之大小。")
print("      輸入資料:任意一組小於 10000 之正整數,及所欲比較之位數 N")
print("                                ")
print("      輸出資料:照條件敘述列印出來")
print("                這個條件要包含:")
print("                (1)由大而小列印出來")
print("                (2)由小而大列印出來")
print("                (3)第 N 位數之最大者")
print("                (4)第 N 位數之最小者")
print("                (5)取任意連續二項而比較其大小")


#=========#串列 (list)============
w=[]      #串列 (list)
w1=[]     #串列 (list)
y=[]      #串列 (list)
y1=[]     #串列 (list)
input2=[] #串列 (list)

while True:
     x=int(input("請你輸入要比較數字總共的數量 (大於2 ,小於10):"))
     try:
        x = int(x)
       
     except ValueError:
       print ('這是不合法的輸入.  請再輸入一次...')
       continue
        
     if ( x > 2 and x <=10 ):
       break

for i in range(x):
  
  a=int(input("請輸入你要比較的數字(需大於等於1000):"))
  sP=repr(a)     #轉成 字串
  P=(sP[1:3])    #擷取 第2,3位數
  #print(sP)      #debug
  #print(P)       #debug  
  w.append(a)
  y.append(a) 
  w1.append(a)
  y1.append(P)
  
  input1=sP+repr(P)
  input1=input1.split(':')
  input2=input2+input1
  

#=================================
print("====由大而小====")
while 1:
   try:
       c=max(w)
       w.remove(c)
       print (c)
   except ValueError: 
       # print ("程式已經結束")
       break  

#=================================
print("====由小而大====")
while 1:
   try:
       d=min(y)
       y.remove(d)
       print (d)
   except ValueError: 
       # print ("程式已經結束")
       break  

# Python提供兩種內建排序的function分別是sort()和sorted()
# 這兩個function都可以用來排序一個list
# 差別在於sorted()會回傳一個排序好新的list
# sort()會直接修改原始的list並排序完成



w2=sorted(w1)
#=================================
print("====",x,"位數中最大者 ====")
print(max(w2))

#=================================
print("====",x,"位數中最小者 ====")
print(min(w2))


# y1=sorted(y1)
#=================================
print("====數字中第2,3 位數中最大者 ====")
#print(y1)

#=================================
input3=()   #tuple 元組

input3= tuple(input2)
print("======================")    
print (input3)

print("======================")    
input4= sorted(input3, key=lambda input3 : input3[1])   # sort by  數字中第2,3 位數中最大者
print(input4)
print ("最大者 = " ,(input4[len(input4)-1]))

結果 :
>>> 
================ RESTART: D:\程式語言 Python 入門\50題\Ex50-17-1.py ================
 ===========python 程式設計50題測試範例-17============= 
17、試設計一程式可以比較一組資料(<10000之正整數)中
    ,任意一位(或數位數)之大小。
      輸入資料:任意一組小於 10000 之正整數,及所欲比較之位數 N
                                
      輸出資料:照條件敘述列印出來
                這個條件要包含:
                (1)由大而小列印出來
                (2)由小而大列印出來
                (3)第 N 位數之最大者
                (4)第 N 位數之最小者
                (5)取任意連續二項而比較其大小
請你輸入要比較數字總共的數量 (大於2 ,小於10):4
請輸入你要比較的數字(需大於等於1000):237
請輸入你要比較的數字(需大於等於1000):126
請輸入你要比較的數字(需大於等於1000):3175
請輸入你要比較的數字(需大於等於1000):1167
====由大而小====
3175
1167
237
126
====由小而大====
126
237
1167
3175
==== 4 位數中最大者 ====
3175
==== 4 位數中最小者 ====
126
====數字中第2,3 位數中最大者 ====
======================
("237'37'", "126'26'", "3175'17'", "1167'16'")
======================
["3175'17'", "1167'16'", "126'26'", "237'37'"]
最大者 =  237'37'
>>> 

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...