跳轉到內容

Python 3 非程式設計師教程/決策

來自華夏公益教科書,自由的教科書

if 語句

[編輯 | 編輯原始碼]

像往常一樣,我認為我應該用熱身打字練習開始每一章,所以這裡有一個簡短的程式來計算一個整數的絕對值

n = int(input("Number? "))
if n < 0:
   print("The absolute value of", n, "is", -n)
else:
   print("The absolute value of", n, "is", n)

以下是程式執行兩次的輸出結果

Number? -34
The absolute value of -34 is 34
Number? 1
The absolute value of 1 is 1

那麼,當計算機看到這段程式碼時它會做什麼呢?首先,它使用語句“n = int(input("Number? "))”提示使用者輸入一個數字。然後,它讀取行“if n < 0:”。如果n小於零,Python 將執行行“print("The absolute value of", n, "is", -n)”。否則,它將執行行“print("The absolute value of", n, "is", n)”。

更正式地說,Python 會檢視表示式n < 0 是真還是假。一個if語句後面跟著一個縮排的程式碼塊,當表示式為真時,這些語句就會被執行。可選地,if語句後面可以跟著一個else語句和另一個縮排的程式碼塊。如果表示式為假,這個第二個程式碼塊將被執行。

表示式可以進行許多不同的測試。這裡是一個所有測試的表格

運算子 函式
< 小於
<= 小於或等於
> 大於
>= 大於或等於
== 等於
!= 不等於

if命令的另一個特點是elif語句。它代表else if,意思是如果原始的if語句為假,但elif部分為真,則執行elif部分。如果ifelif表示式都不為真,則執行else塊中的內容。這裡有一個例子

a = 0
while a < 10:
    a = a + 1
    if a > 5:
        print(a, ">", 5)
    elif a <= 3:
        print(a, "<=", 3)
    else:
        print("Neither test was true")

以及輸出結果

1 <= 3
2 <= 3
3 <= 3
Neither test was true
Neither test was true
6 > 5
7 > 5
8 > 5
9 > 5
10 > 5

注意,elif a <= 3 只有在if語句不為真時才會被測試。可以有多個elif表示式,允許在單個if語句中進行多個測試。

# This Program Demonstrates the use of the == operator
# using numbers
print(5 == 6)
# Using variables
x = 5
y = 8
print(x == y)

以及輸出結果

False
False

high_low.py

# Plays the guessing game higher or lower 

# This should actually be something that is semi random like the
# last digits of the time or something else, but that will have to
# wait till a later chapter.  (Extra Credit, modify it to be random
# after the Modules chapter)
number = 7
guess = -1

print("Guess the number!")
while guess != number:
    guess = int(input("Is it... "))

    if guess == number:
        print("Hooray! You guessed it right!")
    elif guess < number:
        print("It's bigger...")
    elif guess > number:
        print("It's not so big.")

示例執行

Guess the number!
Is it... 2
It's bigger...
Is it... 5
It's bigger...
Is it... 10
It's not so big.
Is it... 7
Hooray! You guessed it right!

even.py

# Asks for a number.
# Prints if it is even or odd
 
number = float(input("Tell me a number: "))
if number % 2 == 0:
    print(int(number), "is even.")
elif number % 2 == 1:
    print(int(number), "is odd.")
else:
    print(number, "is very strange.")

示例執行

Tell me a number: 3
3 is odd.
Tell me a number: 2
2 is even.
Tell me a number: 3.4895
3.4895 is very strange.

average1.py

# keeps asking for numbers until 0 is entered.
# Prints the average value.

count = 0
sum = 0.0
number = 1 # set to something that will not exit the while loop immediately.

print("Enter 0 to exit the loop")

while number != 0:
    number = float(input("Enter a number: "))
    if number != 0:
        count = count + 1
        sum = sum + number
    if number == 0:
        print("The average was:", sum / count)
示例執行

示例執行

Enter 0 to exit the loop
Enter a number: 3
Enter a number: 5
Enter a number: 0
The average was: 4.0
Enter 0 to exit the loop
Enter a number: 1
Enter a number: 4
Enter a number: 3
Enter a number: 0
The average was: 2.66666666667

average2.py

# keeps asking for numbers until count numbers have been entered.
# Prints the average value.

#Notice that we use an integer to keep track of how many numbers, 
# but floating point numbers for the input of each number
sum = 0.0

print("This program will take several numbers then average them")
count = int(input("How many numbers would you like to average: "))
current_count = 0

while current_count < count:
    current_count = current_count + 1
    print("Number", current_count)
    number = float(input("Enter a number: "))
    sum = sum + number
    
print("The average was:", sum / count)

示例執行

This program will take several numbers then average them
How many numbers would you like to average: 2
Number 1
Enter a number: 3
Number 2
Enter a number: 5
The average was: 4.0
This program will take several numbers then average them
How many numbers would you like to average: 3
Number 1
Enter a number: 1
Number 2
Enter a number: 4
Number 3
Enter a number: 3
The average was: 2.66666666667

編寫一個程式,提示使用者輸入他們的姓名,如果他們輸入你的姓名,則顯示“That is a nice name”,如果他們輸入“John Cleese”或“Michael Palin”,則告訴他們你對他們的感受;),否則告訴他們“You have a nice name”。

解決方案
name = input('Your name: ')
if name == 'Bryn':
    print('That is a nice name.')
elif name == 'John Cleese':
    print('... some funny text.')
elif name == 'Michael Palin':
    print('... some funny text.')
else:
    print('You have a nice name.')


修改本節中更高或更低的程式,以跟蹤使用者輸入錯誤數字的次數。如果超過3次,在最後列印“That must have been complicated”,否則列印“Good job!”。

解決方案
number = 7
guess = -1
count = 0

print("Guess the number!")
while guess != number:
    guess = int(input("Is it... "))
    count = count + 1
    if guess == number:
        print("Hooray! You guessed it right!")
    elif guess < number:
        print("It's bigger...")
    elif guess > number:
        print("It's not so big.")

if count > 3:
    print("That must have been complicated.")
else:
    print("Good job!")


編寫一個程式,要求輸入兩個數字。如果兩個數字的和大於100,則列印“That is a big number”。

解決方案
number1 = float(input('1st number: '))
number2 = float(input('2nd number: '))
if number1 + number2 > 100:
    print('That is a big number.')


Python 3 非程式設計師教程
 ← 計數到10 決策 除錯 → 
華夏公益教科書