程序的控制結構
年齡換算
狗是人類的好朋友,一隻狗大約可以生存 15 至 20 年,狗狗在 2 歲時,已經成年。爲了對狗的年齡有個直觀認識,有一個簡單的換算辦法能將狗的年齡換算爲人類的年齡:
狗狗 1 歲時,相當於人類 15 歲,2 歲時相當於人類 24 歲,此後,狗狗每長 1 歲,都相當於人長 4 歲。
用表格羅列一下,像這樣:
狗的年齡 | 人類的年齡 |
---|---|
1 | 15 |
2 | 24 |
3 | 28 |
4 | 32 |
5 | 36 |
… | … |
請用程序實現
輸入狗狗的年齡,計算並輸出對應的人類的年齡。
示例 1
輸入 | 輸出 |
---|---|
3 | 28 |
示例 2
輸入 | 輸出 |
---|---|
6 | 40 |
# 請使用 input() 輸入狗狗的年齡
year = eval(input())
# 請計算相對人的歲數,並將結果輸出
if year == 1:
print(15)
elif year ==2:
print(24)
elif year > 2:
year = 24 + 4*(year-2)
print(year)
else :
print("輸入錯誤")
平閏年
如果一個年份可以被 4 整除且不能被 100 整除,或者可以被 400 整除,那麼這個年份就是閏年。
請用程序實現
輸入一個年份year
,判斷它是「平年」還是「閏年」。如果是平年,輸出common year
;如果是閏年,輸出leap year
。
示例 1
輸入 | 輸出 |
---|---|
2000 | leap year |
示例 2
輸入 | 輸出 |
---|---|
1990 | common year |
# 請使用 input() 輸入一個年份 year
year = int(input())
# 請判斷這個年份是否爲閏年
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print("leap year")
else:
print("common year")
考試評級
請用程序實現
輸入一個表示考試成績score
的整數,判斷該成績屬於哪個級別,並將判斷結果輸出。
以下爲成績級別劃分:
分數段 | 級別 |
---|---|
0 - 59 | E |
60 - 69 | D |
70 - 79 | C |
80 - 89 | B |
90 - 100 | A |
示例 1
輸入 | 輸出 |
---|---|
94 | A |
示例 2
輸入 | 輸出 |
---|---|
56 | E |
# 請使用 input() 輸入考試成績 score
score = int(input('請輸入考試成績: '))
# 請判斷成績屬於哪個級別
if 100 >=score >= 90:
print("A")
elif 89 >= score >=80:
print("B")
elif 79 >= score >=70:
print("C")
elif 69 >= score >=60:
print("D")
elif 59 >= score >=0:
print("E")
else:
print("輸入錯誤")
大小寫轉換
a、b、c、d這樣的52個字母(包括大寫)在計算機中存儲時也要使用二進制數來表示。
標準ASCII碼使用7位二進制數(剩下的1位二進制爲0)來表示所有的大寫和小寫字母,如下圖所示,可以看出字母對應大小寫的差值爲32。
來進行大小寫轉換吧。
注意:python 中,使用 ord()
函數將 字符 轉換成其對應的 ASCII 碼;使用chr()
函數將 ASCII 碼轉換成其對應的 字符。
如:ord('A')
得到結果 65
,chr(65)
得到結果'A'
。
請用程序實現
輸入一個英文字母char
,判斷它是「大寫字母」還是「小寫字母」。如果是大寫字母,將其轉換爲「對應的小寫字母」;如果是小寫字母,將其轉換爲「對應的大寫字母」;並將轉換後的結果輸出。
示例 1
輸入 | 輸出 |
---|---|
A | a |
示例 2
輸入 | 輸出 |
---|---|
R | r |
# 請使用 input() 輸入一個英文字母 char
char = input()
# 請實現英文字母的大小寫轉化
a = ord(char)
if 96 > a > 64:
a += 32
print(chr(a))
elif 130 > a >96:
a -= 32
print(chr(a))
else:
print("輸入錯誤")
判斷位數並打印各位的值
請用程序實現
輸入一個不多於五位的正整數num
,求出它是幾位數,將結果輸出,並將每一位的數字都打印出來。
注意: 位數和每位的數字分兩行打印。
示例 1
輸入 | 輸出(使用空格分隔同行的多數據輸出) |
---|---|
12345 | 五 1 2 3 4 5 |
示例 2
輸入 | 輸出(使用空格分隔同行的多數據輸出) |
---|---|
567 | 三 5 6 7 |
# 請使用 input() 輸入一個不多於五位的正整數 num
num = int(input())
# 請計算這個正整數的位數,並將每一位的數字都打印出來。
w = len(str(num))
a = ['一','二','三','四','五']
print(a[w-1])
for i in range(w):
print(str(num)[i],end=" ")
# 請使用 input() 輸入一個不多於五位的正整數 num
num=int(input())
# 請計算這個正整數的位數,並將每一位的數字都打印出來。
num1=str(num)
num_list=list(num1)
n=len(num1)
if n==1:
print("一")
print(num)
elif n==2:
print("二")
for i in range(n):
print(num_list[i],end=" ")
elif n==3:
print("三")
for i in range(n):
print(num_list[i],end=" ")
elif n==4:
print("四")
for i in range(n):
print(num_list[i],end=" ")
elif n==5:
print("五")
for i in range(n):
print(num_list[i],end=" ")
迴文數
請用程序實現
輸入一個五位數,判斷它是否是迴文數。如果是,輸出yes;如果不是,輸出no。
注意: 迴文數的個位與萬位相同,十位與千位相同。
示例 1
輸入 | 輸出 |
---|---|
12321 | yes |
示例 2
輸入 | 輸出 |
---|---|
12345 | no |
num = str(input())
newnum = num[::-1]
if num == newnum:
print("yes")
else:
print("no")
地鐵車票
購買地鐵車票的規定如下:
乘 1~4 站,3 元/位;
乘 5~9 站,4 元/位;
乘 9 站以上,5 元/位。
請用程序實現
輸入乘坐人數(per_num)和乘坐站數(sta_num),計算購買地鐵車票需要的總金額,並將計算結果輸出。
注意: 如果「乘坐人數」和「乘坐站數」爲0或負數,輸出error。
示例 1
輸入(使用換行分隔多數據輸入) | 輸出 |
---|---|
0 1 |
error |
示例 2
輸入(使用換行分隔多數據輸入) | 輸出 |
---|---|
1 0 |
error |
示例 3
輸入(使用換行分隔多數據輸入) | 輸出 |
---|---|
2 4 |
6 |
# 請使用 input() 輸入乘坐的人數 per_num 和站數 sta_num
per_num=int(input())
sta_num=int(input())
# 請判斷輸入的人數和站數是否正確,計算購買車票的總金額,並將計算結果輸出
if (per_num <= 0 or sta_num <= 0):
print("error")
else:
if 1 <= sta_num <= 4:
pm = 3
if 5 <= sta_num <= 9:
pm = 4
if sta_num > 9:
pm = 5
print(pm * per_num)
判斷星期
每個星期對應的英語單詞都不同,星期一到星期天的單詞分別爲:monday、tuesday、wednesday、thursday、friday、saturday、sunday。
請用程序實現
輸入單詞的前兩個字符,判斷輸入的單詞是星期幾,並輸出對應的單詞;如果輸入的字符不匹配,則輸出error。
示例 1
輸入 | 輸出 |
---|---|
tu | tuesday |
示例 2
輸入 | 輸出 |
---|---|
mm | error |
# 請使用 input() 輸入單詞的前兩個字母 chars
chars = input()
# 請判斷輸入的是星期幾,並輸出對應的單詞
if chars=="mo":
print("monday")
elif chars=="tu":
print("tuesday")
elif chars=="we":
print("wednesday")
elif chars=="th":
print("thursday")
elif chars=="fr":
print("friday")
elif chars=="sa":
print("saturday")
elif chars=="su":
print("sunday")
else:
print("error")
身體質量指數BMI
BMI :Body Mass Index 國際上常用的衡量人體肥胖和健康程度重要標準,主要用於統計分析。BMI 的計算公式爲 BMI = 體重(kg) / (身高(m) * 身高(m))。
請用程序實現
獲取用戶輸入的體重和身高值,計算並給出國際和國內的 BMI 分類。
要求如下:
(1) 混合計算並給出國際和國內的 BMI 分類;
(2) 使用input()獲得測試用例輸入時,不要增加提示字符串。
示例 1
輸入 | 輸出 |
---|---|
1.68 41 |
BMI數值爲:14.53 BMI指標爲:國際’偏瘦’, 國內’偏瘦’ |
示例 2
輸入 | 輸出 |
---|---|
1.72 80 |
BMI數值爲:27.04 BMI指標爲:國際’偏胖’, 國內’偏胖’ |
height = eval(input())
weight = eval(input())
bmi = weight / height**2
print("BMI數值爲:{:.2f}".format(bmi))
if bmi < 18.5:
print("BMI指標爲:國際'偏瘦',國內'偏瘦'")
elif bmi < 24:
print("BMI指標爲:國際'正常',國內'正常'")
elif bmi < 25:
print("BMI指標爲:國際'正常',國內'偏胖'")
elif bmi < 28:
print("BMI指標爲:國際'偏胖',國內'偏胖'")
elif bmi <30:
print("BMI指標爲:國際'偏胖',國內'肥胖'")
else:
print("BBMI指標爲:國際'肥胖',國內'肥胖'")
height = eval(input())
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))
乞丐
丐幫幫主去天橋乞討,並把每天乞討的錢都存起來。設幫主存款初始爲 0,且不使用這筆錢。
第一天乞討了 1 塊錢;第二天乞討了 2 塊錢;第三天乞討了 4 塊錢;第四天乞討了 8 塊錢;以此類推。
請用程序實現
輸入一個天數day,輸出幫主每天的存款餘額。
示例 1
輸入 | 輸出 |
---|---|
3 | 1 3 7 |
示例 2
輸入 | 輸出 |
---|---|
5 | 1 3 7 15 31 |
# 請使用 input() 輸入一個天數 day
day = int(input("請輸入一個天數: "))
# 計算幫主這些天的總收入,並將每天的總收入輸出
for i in range(1,day+1):
s = 2**i - 1
print(s)
水仙花數
"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如 153 = 1³ + 5³ + 3³,所以 153 是一個水仙花數。
請用程序實現
輸入一個三位數,找出100~num(含)中的所有水仙花數,並將找出的水仙花數從小到大輸出,每行輸出1個數
示例 1
輸入 | 輸出 |
---|---|
200 | 153 |
示例 2
輸入 | 輸出 |
---|---|
400 | 153 370 371 |
num = eval(input())
for i in range(100,num+1):
a = str(i)
if (pow(eval(a[0]),3) + pow(eval(a[1]),3) + pow(eval(a[-1]),3) == i):
print(a)
# 請使用 input() 輸入一個三位數 num
num = int(input())
# 請找出 100 - num(含) 中的所有水仙花數,並將找出的水仙花數輸出
for i in range(100,num+1,1):
a=i%10
b=i%100//10
c=i//100
n=a*a*a+b*b*b+c*c*c
if i==n:
print(i)
籃球彈跳
籃球從一定高度向下掉落,每一次彈起的高度,都是前一次高度的一半。一次掉落和一次彈起極爲一次彈跳。假設籃球初始高度爲10
米。
請用程序實現
輸入籃球彈跳的次數num
,計算num
次後籃球所在的高度,並將計算結果輸出。
示例 1
輸入 | 輸出 |
---|---|
5 | 0.3125 |
示例 2
輸入 | 輸出 |
---|---|
3 | 1.25 |
# 請使用 input() 輸入彈跳的次數 num
num = eval(input('請輸入彈跳的次數: '))
height = 10
# 請計算彈跳 num 次後的籃球高度,並將結果輸出
for i in range(num):
height /= 2
print(height)
階乘
請用程序實現
輸入一個正整數num,計算這個正整數的階乘,並將計算結果輸出。
示例 1
輸入 | 輸出 |
---|---|
5 | 120 |
示例 2
輸入 | 輸出 |
---|---|
10 | 3628800 |
# 請使用 input() 輸入一個正整數 num
num = int(input())
count = 1
# 請計算這個正整數的階乘,並將計算結果輸出
for i in range(1,num+1):
count *= i
print(count)
猴子摘桃
一隻猴子摘桃子, 第一天摘了兩個桃, 以後每天摘的是前一天的兩倍還多一個.
請用程序實現
輸入一個天數day,計算第day天它摘的個數,並將結果輸出。
示例 1
輸入 | 輸出 |
---|---|
2 | 5 |
示例 2
輸入 | 輸出 |
---|---|
9 | 767 |
# 請使用 input() 輸入一個天數 day
day = int(input('請輸入一個天數: '))
n = 2
# 請計算第 day 天猴子摘的桃子個數,並將結果輸出
for i in range(2,day+1):
n = 2*n + 1
print(n)
冰雹猜想
請用程序實現
輸入一個大於1的正整數num; 如果num爲偶數, 就將它變爲num / 2; 如果num爲奇數, 就將它變爲3 * num + 1; 直到num爲1時停止。並將每一次運算的結果輸出。
示例 1
輸入 | 輸出 |
---|---|
12 | 6 3 10 5 16 8 4 2 1 |
示例 2
輸入 | 輸出 |
---|---|
8 | 4 2 1 |
# 請使用 input() 輸入一個整數 num
num = int(input("請輸入一個整數: "))
# 編寫程序驗證冰雹
while num != 1:
if num % 2 == 0:
num /= 2
print(int(num))
else:
num = num * 3 + 1
print(int(num))
忽略倍數
請用程序實現
輸入一個整數num,循環打印1(含)~num(含)中的整數,如果是3的倍數或5的倍數,則忽略。
示例 1
輸入 | 輸出 |
---|---|
6 | 1 2 4 |
示例 2
輸入 | 輸出 |
---|---|
11 | 1 2 4 7 8 11 |
# 請使用 input() 輸入一個整數 num
num = int(input('請輸入一個整數: '))
a = 1
# 請打印 1(含) - num(含) 中的整數,如果是 3 的倍數或 5 的倍數,則忽略
for i in range(1, num+1):
if i % 3 == 0 or i % 5 == 0:
print(end="")
else:
print(i)
素數
「質數」又稱素數,有無限個。素數定義爲在大於 1 的自然數中,除了 1 和它本身以外不再有其他因數的數稱爲素數。
例如17就是素數,因爲它不能被2 - 16的任一整數整除。
請用程序實現: 輸入一個大於 1 的整數num,輸出1~num(含)中的所有的素數(每行輸出1個素數,從小到大排列)。
示例 1
輸入 | 輸出 |
---|---|
7 | 2 3 5 7 |
示例 2
輸入 | 輸出 |
---|---|
20 | 2 3 5 7 11 13 17 19 |
# 請使用 input() 輸入一個整數 num
num = int(input('請輸入一個整數: '))
# 輸出 1 - num(含) 中的所有的素數
for i in range(2,num+1):
fg=0
for j in range(2,i-1):
if i % j == 0:
fg = 1
break
if fg == 0:
print(i)
輸出九九乘法表
大家小時候都背過乘法表,乘法表是有規律的:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
…
在這裏,你需要在循環裏面嵌套一個循環:外面的循環控制行數,裏面的循環控制每一行算式的個數。
想讓算式在同一行輸出,可以在 print 指令中加一個參數:
print(1, end=’ ')
print(2)
這樣,1 和 2 就打印在同一行上面了:
1 2
使用 print 輸出多個數字,輸出的內容之間會有空格:
print(1, 2, 3)
它將輸出:
1 2 3
如果不想讓輸出的內容之間有空格,可以使用格式化輸出:
print(’%sx%s’%(1, 1))
它將輸出:
1x1
它在字符串中使用 %s
佔位,然後在字符串後面跟着 %()
,在 ()
中填寫需要的內容。
那麼接下來,我們就開始吧!
使用小寫的英文字母 x 表示數學中的 乘號。(也可以使用 * 表示乘號)
單個等式內部沒有空格,等式與等式之間空一個空格。
最終效果如下:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
…
# 請在此處編寫你的程序
# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print('{}x{}={}\t'.format(j, i, i*j), end='')
print()
隨機密碼生成
補充編程模板中代碼,完成如下功能:
以整數 17 爲隨機數種子,獲取用戶輸入整數 N 爲長度,產生 3 個長度爲 N 位的密碼,密碼的每位是一個數字。每個密碼單獨一行輸出。
注意: 產生密碼採用random.randint()
函數。
示例
輸入 | 輸出 |
---|---|
3 | 634 524 926 |
#請在...補充代碼
import random
def genpwd(length):
return random.randint(10**(length-1),10**length-1)
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
猜數字
.random()
方法返回隨機生成的一個實數,它在 [0,1) 範圍內。這個實數是大於等於 0,小於 1 的,也就是說不會隨機生成 1。
我們如何使用它呢?看下面的代碼:
import random
#生成一個[0,1)的隨機數
randomNum = random.random()
那麼我們想生成一個在 [0,100) 範圍內的隨機數呢?當然也是可以的,我們只需要將 random.random() 生成的隨機數擴大 100 倍就行了:
import random
# 生成一個[0,100)的隨機數
randomNum = random.random() * 100
注意: .random()
是不能直接訪問的,需要導入 random 模塊,然後通過 random 靜態對象調用該方法。
同樣,random 模塊還有很多的方法,如:random.randint(1, 10)
將返回 1 - 10 之間的整數。
使用 python 實現猜數字遊戲,即系統隨機生成一個整數,通過input()
函數,輸入整數,根據系統給出的提示猜數字。
要求:
1.隨機生成一個 1 - 100 之間的整數。
2.7 次猜數字的機會,如果沒有猜正確,遊戲結束。
3.輸入字母 q,則退出遊戲。
注意: 這不是自動評閱題目,僅用於練習,沒有評閱。
運行你的程序,執行效果如下所示:
您只有7次猜數字的機會哦!
這是第1次猜數字
請輸入數字:1
您輸入的數字太小了,您還有6次機會,請重新輸入!
這是第2次猜數字
請輸入數字:n
輸入的內容必須爲整數,請重新輸入!
這是第3次猜數字
請輸入數字:q
退出遊戲!
進一步改進程序
7 次可能太少,改成 10 次的話,如何調整程序?
0 - 100 的數太小了,如果要改爲 0 - 1000 怎麼調整代碼?
# 導入random模塊
import random
# 生成隨機數,並賦值給num變量
num = random.randint(1, 101)
# 定義 guess_chances 變量,初始化猜的次數
guess_chances = 7
print('您只有7次猜數字的機會哦!')
# 循環輸入的次數
for i in range(1, guess_chances + 1):
print('這是第' + str(i) + '次猜數字')
str1=input()
if str1 == "q":
print("退出遊戲!")
break
else:
num1=int(str1)
if num == num1:
print("您猜對了")
break
if num < num1:
print("您輸入的數字太大了,您還有%d次機會,請重新輸入!"%(7-i))
if num > num1:
print("您輸入的數字太小了,您還有%d次機會,請重新輸入!"%(7-i))
# 實現對輸入數字的判斷
圓周率的計算
求解圓周率可以採用蒙特卡羅方法,在一個正方形中撒點,根據在 1/4 圓內點的數量佔總撒點數的比例計算圓周率值。
請用程序實現
請以 123 作爲隨機數種子,獲得用戶輸入的撒點數量,編寫程序輸出圓周率的值,保留小數點後 6 位。
示例
輸入 | 輸出 |
---|---|
1024 | 3.218750 |
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))
求pi的近似值
輸入精度 e
,使用格雷戈裏公式求 π
的近似值,精確到最後一項的絕對值小於 e.
格雷戈裏公式如下:
π/4 = 1 − 1/3 + 1/5 - 1/7 + 1/9 + ··· + 1/(2 * n - 1)
注意: n
從 1 開始.
輸入格式:
輸入在一行中給出精度 e
輸出格式:
對於給定的輸入,在一行中輸出π的近似值。
示例 1
輸入 | 輸出 |
---|---|
1 | 2.666666666666667 |
注意:1 的絕對值不小於 1,1/3 的絕對值小於 1,所以π = 4 * (1 - 1/3) = 2.666666666666667
示例 2
輸入 | 輸出 |
---|---|
0.0001 | 3.1417926135957908 |
e = float(input())
# 請根據 e 計算 pi 的近似值
sum=0
n=1
sign=-1
sum = sum + sign / (2*n-1)
while abs(sign/(2*n-1))>=e:
n=n+1
sign=-sign
sum=sum+sign/(2*n-1)
count=4*sum
print(count)