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