1. 程式人生 > >Python的if語句等題型

Python的if語句等題型

關卡一:
練習題1:
1.python中比較運算子都有哪些?
答:==、!=、<=、>=、<、>

2.a = 1, b = 2, 則(a == b) 、(a != b) 、(a > b) 、(a < b) 、(a >= b) 、(a <= b) 分別返回什麼?
答:False、True、False、True、False、True

練習題2:
1.python中邏輯運算子有哪些? 它們之間有什麼區別?
答:and:且、與,只要有一個False,最終結果就是False,只有兩邊都是Tru e,才會顯示True
or:或,只要有一個True,最終結果就是True,只有兩邊都是False ,才會顯示True
not:非,對值取反,True取反後是False,False取反後是True


2.使用if完成剪刀石頭布程式
答:

import random

# 死迴圈
while True:
    # 獲取電腦出拳的隨機數
    computer = random.randint(1, 3)
    # 獲取玩家出拳的數
    player = int(input("【1】:剪刀,【2】:石頭,【3】:布,請輸入你要出的拳頭:"))
    # 玩家贏了
    if (computer == 1 and player == 2) or (computer == 2 or player == 3) or (computer == 3 and player == 1):
        print("恭喜你贏了電腦")
    # 平局
    elif computer == player:
        print("和電腦打成平手了,再接再厲")
    # 玩家輸了
    else:
        print("電腦贏了,繼續努力啊")


練習題3:
1.編寫程式碼,1-7七個數字,分別代表週一到週日,如果輸入的數字是6或7,輸出“週末”。
答:

while True:
    # 獲取輸入的值
    today = int(input("請輸入1-7的數字,我們會返回判斷後的值"))
    # 判斷是否是6/7,是的話輸出週末
    if today == 6 or today == 7:
        print("週末")


2.編寫程式碼,1-7七個數字,分別代表週一到週日,如果輸入的數字是6或7,輸出“週末”,否則輸出“工作日”。
答:

while True:
    # 獲取輸入的值
    today = int(input("請輸入1-7的數字,我們會返回判斷後的值"))
    # 判斷是否是6/7,是的話輸出週末
    if today == 6 or today == 7:
        print("週末")
    # 否則輸出工作日
    else:
        print("工作日")


3.編寫程式碼,1-7七個數字,分別代表週一到週日,如果輸入的數字是6或7,輸出“週末”,如果輸入的數字是1-5,輸出“工作日”,如輸入其他數字,輸出“錯誤”。
答:

while True:
    # 獲取輸入的值
    today = int(input("請輸入1-7的數字,我們會返回判斷後的值"))
    # 判斷是否是6/7,是的話輸出週末
    if today == 6 or today == 7:
        print("週末")
    # 如果是1/2/3/4/5輸出工作日
    elif today == 1 or today == 2 or today == 3 or today == 4 or today == 5:
        print("工作日")
    # 否則輸出:輸入錯誤
    else:
        print("輸入錯誤")


4.根據以上題目思考if和if、else以及if、elif、else的使用格式和區別。
答:總的格式:
if 條件1:
    條件1成立,執行此處程式碼
elif 條件2:
    條件2成立,執行此處程式碼
elif 條件3:
    條件3成立,執行此處程式碼
else:
    以上條件都不成立,執行此處程式碼

區別:if、elif都需要寫條件,else不需要寫條件,if可單獨使用,else、elif需要和if一起使用


練習題4:
1.python中迴圈語句有哪些?寫出各迴圈語句的格式。
答:while、for
while 條件:
        條件滿足時,做的事情1
        條件滿足時,做的事情2
        條件滿足時,做的事情3
        ...(省略)...
for 臨時變數 in 列表或者字串等可迭代物件:
    迴圈滿足條件時執行的程式碼


練習題5:
1.使用while迴圈計算1~100的累積和(包含1和100)。
答:

i = 1  # 迴圈使用數
sum1 = 0  # 和
while i <= 100:
    sum1 += i
    i += 1
print(sum1)


2.使用while迴圈計算5!(5的階乘)。
提示:
1!等於 1
2!等於 1*2
3!等於 1*2*3
n!等於 1*2*3*...*n
答:

# 獲取輸入數
num1 = 5
num2 = 1  # 記錄結果
# 判斷是否大於0
while 0 < num1:
    # 遞乘
    num2 *= num1
    # 每次減一
    num1 -= 1
print("5的階乘結果是:%d" %  num2)


3.從鍵盤獲取一個數字,然後計算它的階乘,例如輸入的是3,那麼即計算3!的結果,並輸出
答:

while True:
    # 獲取輸入數
    num1 = int(input("請輸入你要階乘的數:"))
    value = num1  # 記錄輸入數
    num2 = 1  # 記錄結果
    # 判斷是否大於0
    while 0 < num1:
        # 遞乘
        num2 *= num1
        # 每次減一
        num1 -= 1
    print("%d的階乘結果是:%d" % (value, num2))


4.使用while迴圈輸出如下圖形:

*
* *
* * *
* * * *
* * * * *
答:

i = 1
# 逐行輸出
while i <= 5:
    print("*" * i)
    i += 1


5.使用while迴圈輸出如下圖形:

* * * * *
* * * *
* * *
* *
*
答:

i = 5
# 逐行輸出
while i >= 0:
    print("*" * i)
    i -= 1


練習題6:
1.現有一字串a = “abcdefg”,將字串中的元素逐個輸出。
答:

for a in "abcdefg":
    print(a)


2.現有一字串a = “abcdefg”,將字串中的元素逐個輸出,並且在輸出的時候如果字母是b則顯示B
答:

for a in "abcdefg":
    if a == "b":
        print("B")
    else:
        print(a)


關卡二:
1.輸入一個人的身高(m)和體重(kg),根據BMI公式(體重除以身高的平方)計算他的BMI指數。

例如:一個52公斤的人,身高是155cm,則BMI為 :
52(kg)/1.552^2(cm)= 21.6

BMI指數:
低於18.5:過輕
18.5-25:正常
25-28:過重
28-32:肥胖
高於32:嚴重肥胖
答:

while True:
    # 獲取身高
    height = float(input("請輸入你的身高(m):"))
    # 獲取體重
    num2 = float(input("請輸入你的體重(kg):"))
    # 計算BMI值
    bmi = num2 / (height * height)
    print("你的BMI指數是:%.2f" % bmi)
    if bmi < 18.5:
        print("過輕")
    elif 18.5 <= bmi < 25:
        print("正常")
    elif 25 <= bmi < 28:
        print("過重")
    elif 28 <= bmi < 32:
        print("肥胖")
    else:
        print("嚴重肥胖")


2.編寫程式碼設計簡易計算器,可以進行基本的加減乘除運算。
答:

while True:
    # 獲取第一個數
    num1 = int(input("請輸入要計算的第一個數:"))
    # 獲取運算子號
    operator = input("請輸入運算子號:")
    # 獲取第二個數
    num2 = int(input("請輸入要計算的第一二個數:"))

    if operator == "+":
        print(num1 + num2)
    elif operator == "*":
        print(num1 * num2)
    elif operator == "-":
        print(num1 - num2)
    elif operator == "/":
        print(num1 / num2)
    else:
        print("只能輸入加減乘除,請重新輸入")


練習題2:
1.如何使用while巢狀迴圈輸出如下圖形:
*
* *
* * *
* * * *
* * * * *
答:

i = 1
while i <= 5:
    j = 1
    while j <= i:
        # 逐個輸出
        print("*", end="")
        j += 1
    print()  # 輸出換行
    i += 1


2.如何使用while巢狀迴圈輸出如下圖形:
* * * * *
* * * *
* * *
* *
*
答:

i = 5
while i >= 0:
    j = 1
    while j <= i:
        # 逐個輸出
        print("*", end="")
        j += 1
    print()  # 輸出換行
    i -= 1


3.使用迴圈巢狀列印九九乘法表。
答:

i = 1
while i <= 9:
    j = 1
    # 根據i值判斷輸出幾個
    while j <= i:
        print("%d * %d = %d" % (j, i, i * j), end="\t")
        j += 1
    print()  # 換行
    i += 1


練習題3:
1.編寫程式碼模擬使用者登陸。要求:使用者名稱為python,密碼123456,如果輸入正確,列印“歡迎光臨”,程式結束,如果輸入錯誤,提示使用者輸入錯誤並重新輸入。
    答:

while True:
    # 獲取輸入的使用者名稱
    userName = input("請輸入您的使用者名稱:")
    # 獲取輸入的密碼
    passWord = input("請輸入您的密碼:")


    if userName == "python" and passWord == "123456":
        print("歡迎光臨")
    else:
        print("輸入的使用者名稱或密碼錯誤,請重新輸入")


2.使用while,完成以下圖形的輸出


*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
答:

i = 1
while i <= 5:
    j = 1
    while j <= i:
        # 逐個輸出
        print("*", end="")
        j += 1
    print()  # 輸出換行
    i += 1
k = 4
while k >= 0:
    q = 1
    while q <= k:
        # 逐個輸出
        print("*", end="")
        q += 1
    print()
    k -= 1


方法二:i = 1
while i <= 9:
    if i <= 5:
        print("*" * i)
    else:
        print("*" * (10 - i))
    i += 1


3.使用while、if來完成剪刀石頭布程式,要求,當玩家第3次獲勝時才退出遊戲,否則繼續玩
答:

import random

count = 0
# 死迴圈
while count != 3:
    # 獲取電腦出拳的隨機數
    computer = random.randint(1, 3)
    # 獲取玩家出拳的數
    player = int(input("【1】:剪刀,【2】:石頭,【3】:布,請輸入你要出的拳頭:"))
    # 玩家贏了
    if (computer == 1 and player == 2) or (computer == 2 or player == 3) or (computer == 3 and player == 1):
        print("恭喜你贏了電腦")
        count += 1
    # 平局
    elif computer == player:
        print("和電腦打成平手了,再接再厲")
    # 玩家輸了
    else:
        print("電腦贏了,繼續努力啊")


關卡三:
1.現有a = 1, b = 2, (a and b) 和 (a or b) 分別返回什麼? 為什麼?
答:分別返回2和1.
當a and b都為真的時候,輸出後面b的值;
當a or b中,第一個就為真,那就輸出a。


2.編寫一個程式計算個人所得稅(以下為個人所得稅稅率表,3500元起徵):


應納稅所得額(含稅)                        稅率(%)
不超過1500元的                              3
超過1500元至4,500元的部分                   10
超過4,500元至9,000元的部分                  20
超過9,000元至35,000元的部分                 25
超過35,000元至55,000元的部分                30
超過55,000元至80,000元的部分                35
超過80,000元的部分                          45
答:

while True:
    salary = int(input("請輸入您的工資:"))
    temp = salary - 3500
    if temp <= 0:
        print("您的月薪為%d元不需要納稅" % salary)
    elif 0 < temp <= 1500:
        tax = temp * 0.03
    elif 1500 < temp <= 4500:
        tax = (temp - 1500) * 0.1 + 45
        # 1500*0.03
    elif 4500 < temp <= 9000:
        tax = (temp - 4500) * 0.2 + 345
        # 1500*0.03+(4500-1500)*0.1
    elif 9000 < temp <= 35000:
        tax = (temp - 9000) * 0.25 + 1245
        # 1500*0.03+(4500-1500)*0.1+(9000-4500)*0.2
    elif 35000 < temp <= 55000:
        tax = (temp - 35000) * 0.3 + 7745
        # 1500*0.03+(4500-1500)*0.1+(9000-4500)*0.2+(35000-9000)*0.25
    elif 55000 < temp <= 80000:
        tax = (temp - 55000) * 0.35 + 13745
        # 1500*0.03+(4500-1500)*0.1+(9000-4500)*0.2+(35000-9000)*0.25+(55000-35000)*0.3
    elif temp > 80000:
        tax = (temp - 80000) * 0.45 + 22495
        # 1500*0.03+(4500-1500)*0.1+(9000-4500)*0.2+(35000-9000)*0.25+(55000-35000)*0.3+(80000-55000)*0.35
    print("您的月薪為%d元,應納稅額%d元" % (salary, tax))





3.設計“過7遊戲”的程式, 打印出1-100之間除了含7和7的倍數之外的所有數字。
答:i = 0


while i <= 100:
    i = i + 1  # 這個要放在continue前,否則if後i不會增加,卡在while死迴圈中
    if i % 7 == 0:
        continue
    print(i)


4.使用while,完成以下圖形的輸出


    *
   ***
  *****
*******
*********
*******
  *****
   ***
    *
答:i = 1


while i <= 9:
    # 前面五個的輸出
    if i <= 5:
        print(' ' * (5 - i), end="")
        print('*' * (2 * i - 1))
    # 後面四個的輸出
    else:
        print(' ' * (i - 5), end="")
        print('*' * (2 * (10 - i) - 1))
    i += 1