測驗4
選擇題
1.哪個選項不符合上述程序空白處的語法要求?{1;2;3;4;5}
for var in ___:
print(var)
2.哪個選項是以上程序的輸出結果?0 1
for i in range(0,2):
print(i)
3.哪個選項給出了上述程序的輸出次數?14
k=10000
while k>1:
print(k)
k=k/2
4.哪個選項是程序的三種基本結構?順序結構,循環結構,分支結構
5.哪個選項關於循環結構的描述是錯誤的?死循環無法退出,沒有任何作用
6.關於Python語句P=-P,哪個選項的描述是正確的?給P賦值爲它的負數
7.哪個選項是用來判斷當前Python語句在分支結構中?縮進
8.哪個選項是下面代碼的執行結果?PYHON
for s in "PYTHON":
if s=="T":
continue
print(s,end="")
9.哪個選項是random庫中用於生成隨機小數的函數?random()
10.關於try-except,哪個選項的描述是錯誤的?使用了異常處理,程序將不會再出錯
四位玫瑰數
描述
四位玫瑰數是4位數的自冪數。自冪數是指一個 n 位數,它的每個位上的數字的 n 次冪之和等於它本身。
例如:當n爲3時,有1^3 + 5^3 + 3^3 = 153,153即是n爲3時的一個自冪數,3位數的自冪數被稱爲水仙花數。
請輸出所有4位數的四位玫瑰數,按照從小到大順序,每個數字一行。
def fun(n):
max = pow(10, n)
ls = []
for i in range(1, max):
t = str(i)
l = len(t)
sum = 0
for j in range(l):
sum += pow(int(t[j]), n)
if sum == i:
ls.append(i)
return ls
ls = fun(4)
for i in ls:
if i >= 1000:
print(i)
100以內素數之和
描述
求100以內所有素數之和並輸出。
素數指從大於1,且僅能被1和自己整除的整數。
提示:可以逐一判斷100以內每個數是否爲素數,然後求和。
def fun(num):
sum = 0
for num in range(2, num):
n = int(pow(num, 0.5)) + 1
for i in range(2, n):
if num % i == 0:
break
else:
sum += num
return sum
sum = fun(100)
print(sum)
練習4
實例5:身體質量指數BMI
BMI :Body Mass Index 國際上常用的衡量人體肥胖和健康程度重要標準,主要用於統計分析
定義:BMI = 體重 (kg) /身高2(m2)
獲取用戶輸入的體重和身高值,計算並給出國際和國內的 BMI 分類
要求如下:
(1) 混合計算並給出國際和國內的 BMI 分類;
(2) 使用input()獲得測試用例輸入時,不要增加提示字符串。
height, weight = eval(input())
bmi = weight / pow(height, 2)
print("BMI數值爲:{:.2f}".format(bmi))
who, nat = "", ""
if bmi < 18.5:
who, nat = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
who, nat = "正常", "正常"
elif 24 <= bmi < 25:
who, nat = "正常", "偏胖"
elif 25 <= bmi < 28:
who, nat = "偏胖", "偏胖"
elif 28 <= bmi < 30:
who, nat = "偏胖", "肥胖"
else:
who, nat = "肥胖", "肥胖"
print("BMI指標爲:國際'{0}',國內'{1}'".format(who, nat))
實例6:圓周率的計算
求解圓周率可以採用蒙特卡羅方法,在一個正方形中撒點,根據在1/4圓內點的數量佔總撒點數的比例計算圓周率值。
請以123作爲隨機數種子,獲得用戶輸入的撒點數量,編寫程序輸出圓周率的值,保留小數點後6位。
from random import random, seed
DARTS = eval(input())
seed(123)
hits = 0.0
for i in range(DARTS):
x, y = random(), random()
dist = pow(x ** 2 + y ** 2, 0.5)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("{:.6f}".format(pi))
整數的加減和
編寫程序計算如下數列的值:
1-2+3-4…966
其中,所有數字爲整數,從1開始遞增,奇數爲正,偶數爲負
s = 0
count = 1
while count <=966:
if count%2 == 0:
s -= count
else:
s += count
count += 1
print(s)
三位水仙花數
“水仙花數"是指一個三位整數,其各位數字的3次方和等於該數本身。
例如:ABC是一個"3位水仙花數”,則:A的3次方+B的3次方+C的3次方 = ABC。
請按照從小到大的順序輸出所有的3位水仙花數,請用"逗號"分隔輸出結果。
s = ""
for i in range(100, 1000):
t = str(i)
if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
s += "{},".format(i)
print(s[:-1])
用戶登錄的三次機會
給用戶三次輸入用戶名和密碼的機會,要求如下:
1)如輸入第一行輸入用戶名爲‘Kate’,第二行輸入密碼爲‘666666’,輸出‘登錄成功!’,退出程序;
2)當一共有3次輸入用戶名或密碼不正確輸出“3次用戶名或者密碼均有誤!退出程序。”。
count = 0
while count < 3:
name = input()
password = input()
if name == 'Kate'and password == '666666':
print("登錄成功!")
break
else:
count += 1
if count == 3:
print("3次用戶名或者密碼均有誤!退出程序。")