---
# System prepended metadata

title: Python程式設計 綜合練習

---

# Python程式設計 綜合練習
## 1.閏年與平年 
```python=
year = int(input("输入一个年份: "))
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
            print("{0} 是閏年".format(year))
            #除以4、除以100、除以400皆為0，故為閏年
       else:
            print("{0} 是平年".format(year))
            #除以4、除以100皆為0，除以400不為0，故為平年
   else:
        print("{0} 是閏年".format(year))
        #除以4為0,除以100、除以400不為0，故為閏年
else:
    print("{0} 是平年".format(year))
    #除以4不為0，故為平年
```
## 2.總和
```python=
num =int(input("num=>"))
#把輸入的n字串轉換成數值並假設為num
n =0
#設n(總數)為0
for i in range(0,num+1,1):
    n=n+i
    #i值會依序由0到num
print (n)

```
## 3.列印矩形
```python=
for i in range(4):
#會印4排出來
    for j in range(5):
        print("*",end = "")
    #每排5個*(後面換行)    
    print(" ")
```
## 4.列印三角形
```python=
k=input("請輸入一個數字(為最底層要幾個*)=>")
n=int(k)
#把k轉成數值
l=1
for i in range (n):
#共有n排
    for i in range (n-1,0,-1):
    #共有n-1個空格
        print(" ",end="")
    n=n -1
    #讓n隨著迴圈遞減
    for i in range(l):
    #第一行只有1個以此類類推重複幾次就有幾個
        print ("*",end="")
    l=l+1
    #讓l和排數相同
    print ()
    #換行
```
## 5.列印金字塔
```python=
x=int(input("請輸入底層星數=>"))
for i in range(x):  
#循环x次打印x行
    for j in range(x-i):    
    #打印空格每次循环递减
        print(' ',end='')
    for q in range(2*i+1):  
    #打印星星
       if q==0 or i==x-1 or q==2*i:   
       #判断打印星星位置，在开头，结尾和最后一行打印星星
           print('*',end='')
       else:
           print(' ',end='')
    print() 
    #每行循环结束后换行
```
## 6.公式解一元二次方程式
```python=
x,y,z=input("二次項 一次項 常數項=>").split()
#輸入三個數並以空格為間隔分割
if str.isdigit(x+y+z) ==True:
#判斷三個字串是否為純整數
    w,s,x=int (x),int(y),int(z)
    #把三數轉為數值
    d=s*s-(4*w*x)
    if d<0:
        print ("無解")
    elif d>0:
        i=(-s-d**0.5)/(2*w)
        k=(-s+d**0.5)/(2*w)
        print ("兩種解"+ str(i)+str(k))
    else :
        l=-s/(2*w)
        print ("重根解"+str(l))
else :
    print ("請重新數入數字")
```
## 7.終極密碼
```python=
from random import randint

#規定範圍並產生密碼
lowest = 1
highest = 100
answer = randint(lowest, highest)

#重複猜數字，直到猜對為止
while True:
    guess = input('密碼介於 ' + str(lowest) + '-' + str(highest) + ':\n>>')
    
    #檢查輸入的內容是否為數字
    try:
        guess = int(guess)  
        #把字串轉換成整數
    except ValueError:  
    #轉換失敗便要求重新輸入數字
        print('格式錯誤，請輸入數字\n')
        continue
    
    #檢查輸入的數字是否介於規定範圍內
    if guess <= lowest or guess >= highest:
        print('請輸入 ' + str(lowest) + '-' + str(highest) + ' 之間的整數\n')
        continue
    
    #判斷有沒有猜中密碼
    if guess == answer:
        print('答對了！')
        break   #猜對才跳脫迴圈
    elif guess < answer:
        lowest = guess
    else:
        highest = guess
```
## 8.成績指標
```python=
stu_num = int(input("請使用者輸入學生人數=> "))
#輸入學生人數，定義成績list的長度
stu_list = []
#輸入成績，以成績list形式儲存
temp = input("請使用者輸入成績=> ").split()
for i in range(stu_num):
    stu_list.append(int(temp[i]))

#呼叫sort()進行成績list排序，並且輸出
stu_list.sort()
for i in range(stu_num):
    print(f"{stu_list[i]} ",end='')
print()

#檢查最低成績是否及格,
#如果是的話，輸出best case、最低及格者成績，結束迴圈
if (stu_list[0] >= 60):
    print("best case")
    print(stu_list[0])
#檢查最高成績是否不及格
#如果是的話，輸出worst case，然後結束迴圈
elif(stu_list[stu_num-1] <= 60):
    print(stu_list[stu_num-1])
    print("worst case")

#其他情況
#掃描成績list，找出最高不及格分數者或是最低及格分數者
else:
    #找出最高不及格分數者
    for i in range(stu_num-1, -1, -1):
        if (stu_list[i] < 60):
            print(stu_list[i])
            break
    #最低及格分數者
    for i in range(stu_num):
        if (stu_list[i] >= 60):
            print(stu_list[i])
            break
```
