主題

從零開始的python ep.3 迴圈 (if for while)

黑子 | 2021-03-13 10:05:12 | 巴幣 16 | 人氣 37

在一開始初學的時候,最早接觸的便是 if 語法
if看似簡單卻有許多巧妙的邏輯在其中,因此在設計時要特別注意
a = 90
if a >= 90:
    print(1)
elif a >= 80:
    print(2)
else:
    print(3)
if elif else 含有多選一的概念與排除法,上方程式運行時,先判斷a有沒有符合if條件,有就跳出1,沒有的話再判斷elif,所以當我輸入a=80會跳出 2,沒符合if 也沒符合elif 就會跳出3

當然你也可以獨立事件的運作
if a >= 70:
    print(4)
if a >= 60:
    print(5)                                  
這樣  只要大於60,就會同時顯示4 跟 5

而錯誤的設計如下
if a >= 70:
    print(6)
elif a >= 80:
    print(7)
因為第一條的if,就已經把大於70的判斷掉了,所以大於80的情況就會直接考慮if 而不是elif的條件
不論輸入任何數都不會顯示 7 (如果你輸入小於70的數,6 7 都不會顯示)

n=input("請輸入年齡\n")
if int(n)>5:
    time=int(input("請問這是第幾次參加此大賽\n"))   #第二個input要寫在while裡面
    if time<5:
        print("恭喜您,您符合本大賽的參賽資格。”)
    else:
        print("很抱歉,您參加太多次了,請把機會留給別人。”))
else:
    print("您不符合參加年齡")

輸入畫面
請輸入年齡
10
請問這是第幾次參加此大賽
3
恭喜您,您符合本大賽的參賽資格。

請輸入年齡
3
您不符合參加年齡


關於從1加到n (要顯示出來過程)
n = int(input())
sum1 = 0
for i in range(1,n+1):
    sum1 += i
    print(i,end='')
    #如果 這次(i)的迴圈 不是最後一次(n)的話
    if i!=n:
        print('+',end='')   #就印出+號
else:
    print(' =',sum1)

有趣的是還有另一種寫法,就是1後面的數字才有+號,所以可以寫成
n = int(input())
sum1 = 1
print(sum1,end='')  #避免換行
for i in range(2,n+1):   #從2開始
    sum1 += i
    print('+',end='')   #數字前先印出+號
    print(i,end='')    
else:
    print(' =',sum1)

在撰寫while的程式,設計邏輯不推薦直接用while True,無窮回圈的效果雖好,但不知道while終止條件,還要去程式串裡面找break的條件

for也可以用巢狀迴圈
例如輸出n*n的星號
n=int(input())
for i in range(n):
    for j in range(n):
        print("*",end=" ")
    print()

透過改變range 可以做到,各種圖案的輸出
但之後也會利用格式化來進行對齊
h = int(input())
for i in range(h):
    print(("*"*(i+1)).rjust(h))  # "*" 是重複的符號 然後*(乘上) i+1次 靠右對齊h格(字元)
輸入4可以得到下圖


while 的語法必須熟記的
while內如果break就直接結束,不會進到else
contiue則可以"略過"後面的條件重頭開始
常用寫法,如果想讓使用者輸入一串內容,然後直到輸入q,輸出結果
n=input()
while n!="q":
    n=input()
    print(n)

先這樣

送禮物贊助創作者 !
0
留言

創作回應

更多創作