python课设代码_python课程编程题汇总(上)
python編程題匯總
眾所周知,由于疫情的原因,大家都在上網(wǎng)課,我也不例外啦~
用這個(gè)貼子來(lái)記錄也和大家分享一下我們課上的編程討論題
中篇在此→python課程編程題匯總(中)
下篇在此→python課程編程題匯總(下)
1、貨幣轉(zhuǎn)換
編寫(xiě)貨幣轉(zhuǎn)換程序
描述:
人民幣和美元是世界上通用的兩種貨幣之一,寫(xiě)一個(gè)程序進(jìn)行貨幣間幣值轉(zhuǎn)換,其中:
人民幣和美元間匯率固定為:1美元 = 6.78人民幣。
程序可以接受人民幣或美元輸入,轉(zhuǎn)換為美元或人民幣輸出。人民幣采用RMB表示,美元USD表示,符號(hào)和數(shù)值之間沒(méi)有空格。
注意:獲得輸入請(qǐng)使用input()
MoneyStr = input("請(qǐng)輸入帶有符號(hào)的數(shù)值:")
if MoneyStr[-1] in['B','b']:
USD=eval(MoneyStr[0:-3])/6.78
print("轉(zhuǎn)換后的金額為{:.2f}USD".format(USD))
elif MoneyStr[-1] in['D','d']:
RMB=eval(MoneyStr[0:-3])*6.78
print("轉(zhuǎn)換后的金額為{:.2f}RMB".format(RMB))
else:
print("輸入格式錯(cuò)誤")
2、超市買(mǎi)蘋(píng)果
需求:收營(yíng)員輸入蘋(píng)果價(jià)格單位為元/斤,用戶購(gòu)買(mǎi)蘋(píng)果的重量,單位為斤,計(jì)算并且輸出付款金額
注意:用戶輸入用input()函數(shù)
轉(zhuǎn)換函數(shù)int(x)、float(x)
DJ = eval(input("請(qǐng)輸入蘋(píng)果單價(jià)(元/斤):"))
ZL = eval(input("請(qǐng)輸入蘋(píng)果重量(斤):"))
print("付款金額為:{:.2f}".format(DJ*ZL))
3、隨機(jī)數(shù)的產(chǎn)生
編寫(xiě)程序:
隨機(jī)產(chǎn)生一個(gè)8位數(shù),每位數(shù)字可以是1到6中的任意一個(gè)整數(shù)
提示:查閱random庫(kù)使用,字符串拼接作用
>>> import random
>>> for i in range(8):
a=random.randint(1,6)
print(a,end='')
4、字符串截取
思考與練習(xí)
str = ‘hellopython’
1、截取第一位到第四位的字符
2、截取第二位到第八位之前的字符
3、截取字符串的全部字符
4、截取第六個(gè)字符到結(jié)尾
5、截取從頭開(kāi)始到倒數(shù)第五個(gè)字符之前
6、截取第三個(gè)字符
7、截取倒數(shù)第一個(gè)字符
8、逆序截取
9、截取倒數(shù)第三位與倒數(shù)第一位之前的字符
10、截取倒數(shù)第三位到結(jié)尾
11、逆序截取,步長(zhǎng)為3
>>> str = 'hellopython'
>>> str[0:4]
'hell'
>>> str[1:7]
'ellopy'
>>> str[:]
'hellopython'
>>> str[5:]
'python'
>>> str[:-5]
'hellop'
>>> str[2]
'l'
>>> str[-1]
'n'
>>> str[::-1]
'nohtypolleh'
>>> str[-3:-1]
'ho'
>>> str[-3:]
'hon'
>>> str[::-3]
'ntoe'
5、表達(dá)式計(jì)算
>>>a=2
>>>b=4
>>>x=6
>>>y=5
>>>c=1
>>>e=2.759
>>>import math
>>>(math.sin(a)+math.sin(b))/(a+b)
0.025415821919625586
>>> 1/3*((a**3+b**3+c**3)**(1/3))
1.3931130654604105
>>> (e**abs(x-y))/(3**x+(6**0.5)*math.sin(y))
0.03128093849812538
6、寫(xiě)出表達(dá)式
按要求寫(xiě)出Python表達(dá)式。
(1)將整數(shù)k轉(zhuǎn)換成實(shí)數(shù)。
(2)求實(shí)數(shù)x的小數(shù)部分。
(3)求正整數(shù)m的個(gè)、十、百位數(shù)字。
//1
float(k)
//2
x-int(x)
//3
m%10 //個(gè)位
m%100//10 //十位
m%1000//100 //百位
7、if-elif-else多分支結(jié)構(gòu)
思考與練習(xí)
利用if-elif-else多分支結(jié)構(gòu)
用戶輸入一個(gè)x的值,編寫(xiě)一段程序,利用format輸出x和分段函數(shù)的值
x=eval(input("請(qǐng)輸入x:"))
if x>2:
y=4*x-5
elif -1<=x and x<=2:
y=x*x+3
else :
y=-x+10
print("x為{0:.2f},得分段函數(shù)的值y={1:.2f}".format(x,y))
8、if-else 二分支結(jié)構(gòu)
思考與練習(xí)
利用if-else 二分支結(jié)構(gòu)編寫(xiě)程序
輸入三條邊長(zhǎng)如果能構(gòu)成三角形就計(jì)算周長(zhǎng)和面積
a=eval(input("請(qǐng)輸入a邊邊長(zhǎng):"))
b=eval(input("請(qǐng)輸入b邊邊長(zhǎng):"))
c=eval(input("請(qǐng)輸入c邊邊長(zhǎng):"))
triangle=(a+b)>c and (a+c)>b and (b+c)>a and abs(a-b)
if triangle:
C=a+b+c
p=C/2
S=(p*(p-a)*(p-b)*(p-c))**0.5
print("可構(gòu)成三角形,該三角形的周長(zhǎng)為{0:.2f},面積為{1:.2f}".format(C,S))
else:
print("不可構(gòu)成三角形")
9、蒙特卡羅方法
思考
1、 蒙特卡羅方法的基本思想是什么?
2、 如何利用蒙特卡羅方法求解π?
//1.基本思想:利用概率模型及隨機(jī)過(guò)程解決一系列實(shí)際問(wèn)題。
//2.構(gòu)造一個(gè)單位正方形和一個(gè)單位圓的1/4,計(jì)算機(jī)隨機(jī)產(chǎn)生兩個(gè)0-1之間的數(shù)作為
//點(diǎn)的橫縱坐標(biāo),從點(diǎn)到原點(diǎn)的距離判斷是否在圓內(nèi),統(tǒng)計(jì)落在1/4圓的個(gè)數(shù)以及落在
//單位正方形的個(gè)數(shù),二者相除再乘以四得到最終結(jié)果為 π。
from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
(x,y=random(),random())
dist=pow(x**2+y**2,0.5)
if dist<=1.0:
hits=hits+1
pi=4*(hits/DARTS)
print("圓周率的值是:{}".format(pi))
print("運(yùn)行時(shí)間是:{:.5f}s".format(perf_counter()-start))
10、常見(jiàn)的異常錯(cuò)誤
列舉一些常見(jiàn)的異常錯(cuò)誤
1、SystemExit:解釋器請(qǐng)求退出
2、Keyboardlnterrupt:用戶請(qǐng)求中斷執(zhí)行(通常輸入Ctrl + C)
3、Stoplteration:迭代器沒(méi)有更多的值
4、StandardError:所有的內(nèi)建標(biāo)準(zhǔn)異常的基類
5、GeneratorExit:生成器(generator)發(fā)生異常來(lái)通知退出
6、ArithmeticError:所有數(shù)值計(jì)算錯(cuò)誤的基類
7、FloatingPointError:浮點(diǎn)數(shù)計(jì)算錯(cuò)誤
8、OverflowError:數(shù)值運(yùn)算超出最大限制
9、ZeroDivisionError:除零錯(cuò)誤
10、AssertionError :斷言語(yǔ)句失敗
11、AttributeError:對(duì)象沒(méi)有這個(gè)屬性
12、EOFError:沒(méi)有內(nèi)建輸入,到達(dá)EOF標(biāo)記
13、EnvironmentError:操作系統(tǒng)錯(cuò)誤的基類
14、IOError:輸入/輸出操作失敗
15、OSError:操作系統(tǒng)錯(cuò)誤
16、WindowsError:系統(tǒng)調(diào)用錯(cuò)誤
17、ImportError:導(dǎo)入模塊/對(duì)象失敗
18、LookupError:無(wú)效數(shù)據(jù)查詢的基類
19、IndexError:序列中沒(méi)有此索引(index)
20、KeyError:映射中沒(méi)有這個(gè)鍵
21、MemorryError:內(nèi)存溢出錯(cuò)誤
22、NameError:未聲明/初始化對(duì)象(沒(méi)有屬性)
23、UnboundLocalError :訪問(wèn)未初始化的本地變量
24、ReferenceError:弱引用(weak reference)試圖訪問(wèn)已經(jīng)回收的對(duì)象
25、RuntimeError:一般運(yùn)行時(shí)錯(cuò)誤
26、NotlmplementedError:尚未實(shí)現(xiàn)的方法
27、SyntaxError:python語(yǔ)法錯(cuò)誤
28、IndentationError:縮進(jìn)錯(cuò)誤
29、TabError:Tab和空格混用
30、SystemError:一般解釋器系統(tǒng)錯(cuò)誤
31、TypeError:對(duì)類型無(wú)效的操作
32、ValueError:傳入無(wú)效的參數(shù)
33、UnicodeError:Unicode相關(guān)的錯(cuò)誤
34、UnicodeDecodeError:Unicode 解碼時(shí)錯(cuò)誤
35、UnicodeEncodeError:Unicode 編碼時(shí)錯(cuò)誤
36、UnicodeTranslateError :Unicode轉(zhuǎn)換時(shí)錯(cuò)誤
11、if中判斷的條件
思考與討論
if中判斷的條件是否只有bool類型表達(dá)式?能否是str類型,或者其他?
不是,可以是任意數(shù)值,例如list類型、str類型、set類型、dict類型,但編譯系統(tǒng)會(huì)把這個(gè)表達(dá)式強(qiáng)制轉(zhuǎn)成邏輯值
12、循環(huán)輸出等腰三角形
使用循環(huán)輸出等腰三角形,打印下面圖形
for i in range(1,5):
for j in range(4-i):
print(" ",end="")
for a in range(2*i-1):
print("*",end="")
print("\n")
13、猴子吃桃問(wèn)題
思考與練習(xí)
猴子吃桃問(wèn)題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了。求第一天共摘了多少?
要求:利用遞歸編寫(xiě)代碼
N=10
n=0
def taozi(n):
n=(n+1)*2
return n
for i in range(N):
if i==0:
n=1
else:
n=taozi(n)
print("第一天摘了{(lán)}個(gè)桃子".format(n))
14、九九乘法表
思考與練習(xí)
利用for循環(huán)語(yǔ)句 打印輸出九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={}".format(i,j,i*j),end=" ")
print("\n")
15、實(shí)例“身體質(zhì)量指數(shù)BMI”討論
思考與討論
1、 觀察實(shí)例5.1或5.2中的條件區(qū)間范圍劃分,思考劃分的規(guī)則是什么?
2、 觀察實(shí)例代碼5.1中的第8行和第10行,思考為何代碼不按照注釋方式寫(xiě)全變量的最小邊界?
3、 Python中判斷條件24<=28<25是否合法?其值是什么?
4、 實(shí)例代碼5.1中第2行最后的反斜杠\有什么作用?
1、5.1是分別根據(jù)不同的范圍標(biāo)準(zhǔn)來(lái)劃分,一個(gè)是國(guó)際BMI標(biāo)準(zhǔn),一個(gè)是國(guó)內(nèi)的標(biāo)準(zhǔn);5.2是將兩個(gè)標(biāo)準(zhǔn)整理后,編寫(xiě)在同一個(gè)程序中的。
2、因?yàn)榈谝粋€(gè)判斷條件中“bmi=18.5不是偏瘦,所以當(dāng)程序運(yùn)行時(shí),第一個(gè)判斷為Falses時(shí),可得此時(shí)的bmi>=18.5,就會(huì)進(jìn)入到第二個(gè)判斷條件“bmi<25”,此時(shí)的判斷條件就相當(dāng)于是“18.5<=bmi<25”;第10行同理。
3、合法,值為False
4、作用是分行,避免一行代碼過(guò)長(zhǎng)
16、各種循環(huán)的應(yīng)用場(chǎng)景
思考與討論
單分支(if語(yǔ)句)、二分支(if-else語(yǔ)句)、多分支(if-elif-else)、if嵌套的應(yīng)用場(chǎng)景?
1、單分支語(yǔ)句一般應(yīng)用于只有一個(gè)選項(xiàng),滿足條件時(shí)執(zhí)行,不滿足則不執(zhí)行的場(chǎng)景
2、二分支語(yǔ)句一般應(yīng)用于有兩個(gè)方案,選擇其中一種執(zhí)行的場(chǎng)景
3、多分支語(yǔ)句則一般應(yīng)用于多條件分類執(zhí)行的場(chǎng)景,如”對(duì)不同分?jǐn)?shù)分級(jí)的問(wèn)題“
4、if嵌套語(yǔ)句一般應(yīng)用于一個(gè)條件判斷完后還需判斷條件的問(wèn)題場(chǎng)景
17、進(jìn)度條反映了軟件的執(zhí)行速度,請(qǐng)思考并給出至少2種提高軟件執(zhí)行速度的方法。
1.盡可能優(yōu)化算法
2.善于使用函數(shù),使程序變的模塊化
等等
18、猜數(shù)字游戲
預(yù)設(shè)一個(gè)0-9之間的整數(shù),讓用戶通過(guò)鍵盤(pán)輸入所猜的數(shù)字,如果大于預(yù)設(shè)的數(shù),顯示“遺憾,太大了”;小于預(yù)設(shè)的數(shù),顯示“遺憾,太小了”,如此循環(huán),知道猜中該數(shù),顯示“預(yù)測(cè)N次,你猜中了!”,其中N是用戶輸入數(shù)字的次數(shù)。
import random as r
n=r.randint(0,9)
t=eval(input("請(qǐng)輸入你猜測(cè)的數(shù)字:"))
count=0
while(n!=t):
if t>n:
print("遺憾,太大了")
count=count+1
else:
print("遺憾,太小了")
count=count+1
t=eval(input("請(qǐng)輸入你猜測(cè)的數(shù)字:"))
print("預(yù)測(cè){}次,你猜中了!".format(count))
19、猜數(shù)字游戲2.0
讓計(jì)算機(jī)能夠隨機(jī)產(chǎn)生一個(gè)預(yù)設(shè)數(shù)字,范圍在0-100之間,其他游戲規(guī)則不變。
要求將代碼封裝到函數(shù)中。
def caishuzi():
import random as r
n=r.randint(0,100)
t=eval(input("請(qǐng)輸入你猜測(cè)的數(shù)字:"))
count=0
while(n!=t):
if t>n:
print("遺憾,太大了")
count=count+1
else:
print("遺憾,太小了")
count=count+1
t=eval(input("請(qǐng)輸入你猜測(cè)的數(shù)字:"))
print("預(yù)測(cè){}次,你猜中了!".format(count))
caishuzi()
20、貨幣轉(zhuǎn)換2.0
匯率計(jì)算問(wèn)題
人民幣和美元間匯率固定為:1美元 = 6.78人民幣
格式要求:20USD 或20RMB
增加如下新功能,完成編寫(xiě)程序
功能1:根據(jù)輸入判斷是人民幣還是美元,進(jìn)行相應(yīng)的轉(zhuǎn)換計(jì)算
功能2:程序可以一直運(yùn)行,直到用戶選擇退出
while(True):
MoneyStr=input("請(qǐng)輸入帶有符號(hào)(UBD或RMB)的數(shù)值(break)退出:")
if MoneyStr=="break":
break
elif MoneyStr[-1] in ['B','b']:
print("輸入貨幣為人民幣")
USD=eval(MoneyStr[0:-3])/6.78
print("轉(zhuǎn)換后的金額為{:.2f}USD".format(USD))
elif MoneyStr[-1] in ['D','d']:
print("輸入貨幣為美元")
RMB=eval(MoneyStr[0:-3])*6.78
print("轉(zhuǎn)換后的金額為{:.2f}RMB".format(RMB))
else:
print("輸入的格式錯(cuò)誤")
以上只是我個(gè)人解法和理解,如果有不同的想法歡迎大家一起討論~
都看到這里了,給我點(diǎn)個(gè)贊唄~
總結(jié)
以上是生活随笔為你收集整理的python课设代码_python课程编程题汇总(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 记录一下alibaba cloud b
- 下一篇: go 怎么等待所有的协程完成_理解真实世