jmu-python-函数-找钱_python函数题 - osc_wv1mxwu2的个人空间 - OSCHINA - 中文开源技术交流社区...
請大家嚴格按照下面順序編寫圓形生成器程序。 :
定義函數getCircleArea(r),可以對指定r計算圓面積。計算公式math庫的pi*r*r。
定義函數get_rList(n),功能:輸入n個值放入列表并將列表return。
輸入n,調用get_rList(n)獲得列表rList。
遍歷rList,對每個元素調用getCircleArea,并按格式輸出。
注意:需導入程序中所需要的庫,并提交兩個函數的定義。
函數接口定義:
getCircleArea(r) #r代表整數半徑
get_rList(n) #n代表在函數中輸入n個值放入列表。
裁判測試程序樣例:
/* 請在這里填寫答案 */
n = int(input())
rList = get_rList(n)
for e in rList:
print('{:10.3f}'.format(getCircleArea(e)))
print(type(rList))
輸入樣例:
3
1
2
3
輸出樣例:
3.142
12.566
28.274
import math
def getCircleArea(r):return math.pi*r*r
def get_rList(n):
l=[]for i inrange(n):
a=int(input())
l.append(a)returnl
n= int(input())
rList=get_rList(n)for e inrList:
print('{:10.3f}'.format(getCircleArea(e)))
print(type(rList))
6-2 jmu-python-組合數據類型-1.計算坐標點歐氏距離 (10 分)
讀取若干個點,每個點放入元組。并將所有點的點信息、點的類型、點與原點的距離打印出來。
函數接口定義:
readPoint() #從一行以,分隔的數中讀取坐標,放入元組并返回
distance(point) #計算point與原點的距離并返回,要math庫中的函數
裁判測試程序樣例:
/* 請在這里填寫答案 */
n = int(input())
for i in range(n):
p = readPoint()
print('Point = {}, type = {}, distance = {:.3f}'.format(p,type(p),distance(p)))
輸入格式:
輸入n,代表底下要輸入n行點坐標。坐標全部為整數。
點坐標x,y,z以,分隔。坐標全部為整數。
注意:坐標以,分隔,相應位置可能無字符或者包含多個空格字符,讀入時按照0進行處理。
輸出格式:
見輸出樣例
輸入樣例:
5
1,1,1
,,
2,,1
3,1,3
5,,
輸出樣例:
Point = (1, 1, 1), type = , distance = 1.732
Point = (0, 0, 0), type = , distance = 0.000
Point = (2, 0, 1), type = , distance = 2.236
Point = (3, 1, 3), type = , distance = 4.359
Point = (5, 0, 0), type = , distance = 5.000
import math
def readPoint():
#從一行以,分隔的數中讀取坐標,放入元組并返回
a=input().split(',')for i inrange(len(a)):try:if eval(a[i])>0:
a[i]=int(a[i])
except:
a[i]=0
returntuple(a)
def distance(point):
#計算point與原點的距離并返回,要math庫中的函數
sum=0
for i in range(3):
sum=sum+point[i]*point[i]returnmath.sqrt(sum)
n= int(input())for i inrange(n):
p=readPoint()
print('Point = {}, type = {}, distance = {:.3f}'.format(p,type(p),distance(p)))
6-3 jmu-python-組合數據類型-2.坐標點分類 (10 分)
在上題(1.計算坐標點歐氏距離)的基礎上。將每個點根據距離原點的遠近分成兩類,一類是小于r的點,一類是大于等于r的點。
步驟如下:
調用ClassifyPoints(points, r)函數根據輸入的半徑r進行分類,將所有=r的點放入b列表。然后將a,b列表以元組的方式返回賦值給pointsTuple。
將pointsTuple直接輸出。
調用printPointsTuple(pointsTuple, r),將=r的點集合分情況輸出,輸出還需包含每個點集的平均距離。
函數接口定義:
readPoint() #從一行以,分隔的數中讀取坐標,放入元組并返回。如果相應位置無數據,按0處理。
distance(point) #計算point與原點的距離并返回,要math庫中的函數
ClassifyPoints(points, r): #根據r將points中的點分成兩類放入兩個列表,距離小于r與大于等于r。然后將兩個列表以元組的形式返回
avgDistance(pointList): #計算列表pointList中的所有點到原點的平均距離,可利用distance(p)函數
printPointsTuple(psTuple, r): #將元組psTuple中的數據按照輸出樣例格式輸出。輸出順序由psTuple中點列表的順序決定。
裁判測試程序樣例:
/* 請在這里填寫答案 */
n = int(input())
r = int(input())
points = []
for i in range(n):
p = readPoint()
points.append(p)
print('Point = {}, type = {}, distance = {:.3f}'.format(p,type(p),distance(p)))
pointsTuple = ClassifyPoints(points, r)
print("pointsTuple = {}".format(pointsTuple))
printPointsTuple(pointsTuple,r)
輸入格式:
輸入n,代表底下要輸入n行點坐標。點坐標x,y,z以,分隔。坐標全部為整數。
輸入r, 代表要以r作為分類依據。
注意:坐標以,分隔,相應位置可能無字符或者包含多個空格字符,讀入時按照0進行處理。
輸出格式:
見輸出樣例。注意:= < >=兩側均有一個空格,,后面要有一個空格。
printPointsTuple中計算的平均距離保留3位小數。輸出順序由psTuple中點列表的順序決定。
輸入樣例:
5
5
1,1,1
,,
2,3,5
3,1,3
5,,
輸出樣例:
Point = (1, 1, 1), type = , distance = 1.732
Point = (0, 0, 0), type = , distance = 0.000
Point = (2, 3, 5), type = , distance = 6.164
Point = (3, 1, 3), type = , distance = 4.359
Point = (5, 0, 0), type = , distance = 5.000
pointsTuple = ([(1, 1, 1), (0, 0, 0), (3, 1, 3)], [(2, 3, 5), (5, 0, 0)])
distance < 5, avgDistance = 2.030, points = [(1, 1, 1), (0, 0, 0), (3, 1, 3)]
distance >= 5, avgDistance = 5.582, points = [(2, 3, 5), (5, 0, 0)]
import math
def readPoint():
a=input().split(',')for i inrange(len(a)):try:if eval(a[i])>0:
a[i]=int(a[i])
except:
a[i]=0
returntuple(a)
def distance(point):
sum=0
for i in range(3):
sum+=point[i]**2
returnmath.sqrt(sum)
def ClassifyPoints(points, r):
a,b=[],[]for i inrange(len(points)):if distance(points[i])
a.append(points[i])else:
b.append(points[i])
z=(a,b)returnz
def avgDistance(pointList):
sum=0
for i inrange(len(pointList)):
sum+=distance(pointList[i])return sum/len(pointList)
def printPointsTuple(psTuple, r):
print("distance < {}, avgDistance = {:.3f}, points = {}".format(r,avgDistance(psTuple[0]),psTuple[0]))
print("distance >= {}, avgDistance = {:.3f}, points = {}".format(r,avgDistance(psTuple[1]),psTuple[1]))
n= int(input())
r= int(input())
points=[]for i inrange(n):
p=readPoint()
points.append(p)
print('Point = {}, type = {}, distance = {:.3f}'.format(p,type(p),distance(p)))
pointsTuple=ClassifyPoints(points, r)
print("pointsTuple = {}".format(pointsTuple))
printPointsTuple(pointsTuple,r)
6-4 jmu-python-組合數據類型-3.二維坐標點統計 (15 分)
隨機生成n個點并存入字典,每個點的坐標為(x, y),坐標x、y的取值范圍是[0,10]之間的整數。
隨機生成點的過程中可能會產生重復的點(兩個點的坐標值一樣),需記錄該點生成的次數,如在
整個生成點的過程中生成了3個坐標為(2,1)的點,那么需將3作為點生成次數紀錄下來。
最后在字典中查詢3次點坐標,并返回查詢結果。
建議:使用字典存儲點。
思考:如何在此基礎上使用蒙特卡洛方法計算圓周率。
步驟如下: 輸入n代表要產生n個點
輸入x代表隨機數種子(注意:設置種子前需將x轉化為整型)
調用generatePoint(n)函數生成n個點,每個點包含x,y坐標,將(x,y)存為元組,然后將該元組作為元素放入列表(可放重復的點坐標),并將該列表返回。
調用createPointDict(pList)將步驟1生成的點列表pList中的每個點放入字典pDict中,字典的鍵為點(元組),值為出現次數。
調用doQuery(pDict, p): 在pDict中查詢p,如果查到則輸出點即出現次數,否則輸出Not Found。
注意:需要導入random庫
函數接口定義:
generatePoints(n) #產生n個2維坐標點放入列表并返回該列表
createPointDict(pList) #將pList中的節點加入字典并統計出現次數,然后返回字典
doQuery(pDict, p) #在pDict中查詢p,如果查到則輸出該點及其出現次數,否則輸出'Not Found'。
裁判測試程序樣例:
/* 請在這里填寫答案 */
n = int(input())
seed(int(input()))
pList = generatePoints(n)
pDict = createPointDict(pList)
for i in range(3):#查詢3次
x, y = [int(e) for e in input().split(',')]
doQuery(pDict, (x, y))
輸入格式:
輸入的n代表產生n個坐標點
輸入x代表種子(x需轉化為整型)
若干個行所要查找的坐標。
輸出格式:
如果存在,輸出 二維坐標點 = 出現次數。注:二維坐標點以元組形式出現。
否則輸出Not Found
輸入樣例:
10000
1
2,9
99,100
1,7
輸出樣例:
(2, 9) = 87
Not Found
(1, 7) = 75
from random import*import math
def generatePoints(n):
#產生n個2維坐標點放入列表并返回該列表
l=[]for i inrange(n):
x,y=randint(0,10),randint(0,10)
z=(x,y)
l.append(z)returnl
def createPointDict(pList):
#將pList中的節點加入字典并統計出現次數,然后返回字典
s={}for i inpList:if i ins:
s[i]+=1
else:
s[i]=1
returns
def doQuery(pDict, p):
#在pDict中查詢p,如果查到則輸出該點及其出現次數,否則輸出'Not Found'。if p inpDict:
print("{} = {}".format(p,pDict[p]))else:
print("Not Found")
n= int(input())
seed(int(input()))
pList=generatePoints(n)
pDict=createPointDict(pList)for i in range(3):#查詢3次
x, y= [int(e) for e in input().split(',')]
doQuery(pDict, (x, y))
6-5 jmu-python-判斷質數 (10 分)
本題要求實現一個函數,判斷參數是否是質數,是的話返回True,否則返回False
注意:函數中要有異常處理,如果參數不是整數,返回False
函數接口定義:
def isPrime(num)
裁判測試程序樣例:
/* 請在這里填寫答案 */
num=input()
if isPrime(num):
print('yes')
else:
print('no')
輸入樣例1:
ab
輸出樣例1:
no
輸入樣例2:
1.1
輸出樣例2:
no
輸入樣例3:
11
輸出樣例3:
yes
def isPrime(num):try:
num=int(num)for i in range(2,num):if num%i==0:returnFalsereturnTrue
except:returnFalse
num=input()ifisPrime(num):
print('yes')else:
print('no')
6-6 jmu-python-函數-找錢 (10 分)
買單時,營業員要給用戶找錢。營業員手里有10元、5元、1元(假設1元為最小單位)幾種面額的鈔票,其希望以
盡可能少(張數)的鈔票將錢換給用戶。比如,需要找給用戶17元,那么其需要給用戶1張10元,1張5元,2張1元。
而不是給用戶17張1元或者3張5元與2張1元。
函數接口定義:
giveChange(money) #money代表要找的錢,為整數。該函數經過計算,然后按照格式"要找的錢 = x*10 + y*5 + z*1"直接輸出。
裁判測試程序樣例:
/* 請在這里填寫答案 */
n = int(input())
for i in range(n):
giveChange(int(input()))
輸入樣例:
5
109
17
10
3
0
輸出樣例:
109 = 10*10 + 1*5 + 4*1
17 = 1*10 + 1*5 + 2*1
10 = 1*10 + 0*5 + 0*1
3 = 0*10 + 0*5 + 3*1
0 = 0*10 + 0*5 + 0*1
def giveChange(a):
a10, a5, a1= 0, 0, 0a10= a//10
a5 = (a%10)//5
a1 = (a%10)%5print("{} = {}*10 + {}*5 + {}*1".format(a, a10, a5, a1))
6-7 jmu-python-楊輝三角 (10 分)
根據輸入的n打印n行楊輝三角型。
函數接口定義:
printYanghui(n):#打印n行楊輝三角型
裁判測試程序樣例:
/* 請在這里填寫答案 */
n = int(input())
printYanghui(n)
輸入格式:
輸入n,轉化為整數
輸出格式:
每個數后面均有一個空格。
輸入樣例:
5
輸出樣例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
def printYanghui(n):
num=[]for i in range(n+1):
num+=[[]]for j in range(n+1):
num[i]+=[0]
num[1][1]=1
for i in range(2,n+1):for j in range(1,n+1):
num[i][j]=num[i-1][j]+num[i-1][j-1]for i in range(1,n+1):for k in range(n-i):
print("",end=' ')for j in range(1,i+1):
print(num[i][j],end=' ')
print()
n= int(input())
printYanghui(n)
6-8 jmu-java&python-統計字符個數 (10 分)
編寫程序統計1行字符串中:
不同字符的個數。
每種字符出現的次數。
函數接口定義:
Freq(line)
函數功能:該函數統計不同字符出現的次數,并最后按照字符升序進行輸出。輸出格式見輸出樣例。
參數說明:line為需要統計的字符串。
裁判測試程序樣例:
/* 請在這里填寫答案 */
line = input()
Freq(line)
輸入樣例:
abc 123 adex!!!
輸出樣例:
11
= 2
! = 3
1 = 1
2 = 1
3 = 1
a = 2
b = 1
c = 1
d = 1
e = 1
x = 1
輸出格式說明:
第1行輸出不同字符的個數。
=兩邊應有空格。
上述輸出樣例中第2行的字符是空格。
輸出按照字符升序排列。
def Freq(line):
words=line
s={}
for i in words:
if i in s:
s[i]+=1
else:
s[i]=1
s=list(s.items())
print(len(s))
s.sort(key=lambda x:x[0])
for i in range(len(s)):
word,count=s[i]
print("{} = {}".format(word,count))
line = input()
Freq(line)
6-9 6-1.使用函數求特殊a串數列和 (30 分)
給定兩個均不超過9的正整數a和n,要求編寫函數fn(a,n) 求a+aa+aaa++?+aa?aa(n個a)之和,fn須返回的是數列和
函數接口定義:
fn(a,n)
其中 a 和 n 都是用戶傳入的參數。 a 的值在[1, 9]范圍;n 是[1, 9]區間內的個位數。函數須返回級數和
裁判測試程序樣例:
/* 請在這里填寫答案 */
a,b=input().split()
s=fn(int(a),int(b))
print(s)
輸入樣例:
在這里給出一組輸入。例如:
2 3
輸出樣例:
在這里給出相應的輸出。例如:
246
def fn(a,n):
sum=0
for i in range(1,n+1):
c=afor j in range(0,i-1):
c=a+c*10sum=sum+creturn sum
6-10 6-2.使用函數求素數和 (20 分)
使用函數求素數和
prime(p), 其中函數prime當用戶傳入參數p為素數時返回True,否則返回False. PrimeSum(m,n),函數PrimeSum返回區間[m, n]內所有素數的和。題目保證用戶傳入的參數1<=m
函數接口定義:
在這里描述函數接口:
prime(p),返回True表示p是素數,返回False表示p不是素數
PrimeSum(m,n),函數返回素數和
裁判測試程序樣例:
/* 請在這里填寫答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))
輸入樣例:
在這里給出一組輸入。例如:
1 10
輸出樣例:
在這里給出相應的輸出。例如:
17
def prime(p):if p<=1:returnFalsefor i in range(2,p):if p%i==0:returnFalsereturnTrue
def PrimeSum(m,n):
sum=0
for i in range(m,n+1):ifprime(i):
sum+=ireturn sum
6-11 6-3 使用函數統計指定數字的個數 (20 分)
本題要求實現一個統計整數中指定數字的個數的簡單函數。
CountDigit(number,digit )
其中number是整數,digit為[1, 9]區間內的整數。函數CountDigit應返回number中digit出現的次數。
函數接口定義:
在這里描述函數接口。例如:
CountDigit(number,digit ),返回digit出現的次數
裁判測試程序樣例:
/* 請在這里填寫答案 */
number,digit=input().split()
number=int(number)
digit=int(digit)
count=CountDigit(number,digit )
print("Number of digit 2 in "+str(number)+":",count)
輸入樣例:
在這里給出一組輸入。例如:
-21252 2
輸出樣例:
在這里給出相應的輸出。例如:
Number of digit 2 in -21252: 3
def CountDigit(number,digit ):
count=0
if number<0:
number=-numberwhile number>0:
i=number%10
if i==digit:
count+=1number//=10
return count
6-12 6-5.使用函數求余弦函數的近似值 (20 分)
本題要求實現一個函數,用下列公式求cos(x)近似值,精確到最后一項的絕對值小于eps(絕對值小于eps的項不要加):
cos (x) = x^0 / 0! - x^2 / 2! + x^4 / 4! - x^6 / 6! + ?
函數接口定義:funcos(eps,x ),其中用戶傳入的參數為eps和x;函數funcos應返回用給定公式計算出來,保留小數4位。
函數接口定義:
函數接口:
funcos(eps,x ),返回cos(x)的值。
裁判測試程序樣例:
在這里給出函數被調用進行測試的例子。例如:
/* 請在這里填寫答案 */
eps=float(input())
x=float(input())
value=funcos(eps,x )
print("cos({0}) = {1:.4f}".format(x,value))
輸入樣例:
在這里給出一組輸入。例如:
0.0001
-3.1
輸出樣例:
在這里給出相應的輸出。例如:
cos(-3.1) = -0.9991
def funcos(eps,x ):
sum=0i=0count=0
whileTrue:
c=1
for j in range(1,2*i+1):
c=c*jif ((x**(2*i))/c)
else:if count%2==0:
sum=sum+(x**(2*i))/celse:
sum=sum-(x**(2*i))/c
i+=1count+=1
6-13 6-4.使用函數輸出指定范圍內Fibonacci數的個數 (20 分)
本題要求實現一個計算Fibonacci數的簡單函數,并利用其實現另一個函數,輸出兩正整數m和n(0
函數接口定義:
在這里描述函數接口。例如:
fib(n),返回fib(n)的值
PrintFN(m,n),用列表返回[m, n]中的所有Fibonacci數。
裁判測試程序樣例:
在這里給出函數被調用進行測試的例子。例如:
/* 請在這里填寫答案 */
m,n,i=input().split()
n=int(n)
m=int(m)
i=int(i)
b=fib(i)
print("fib({0}) = {1}".format(i,b))
fiblist=PrintFN(m,n)
print(len(fiblist))
輸入樣例:
在這里給出一組輸入。例如:
20 100 6
輸出樣例:
在這里給出相應的輸出。例如:
fib(6) = 13
4
def fib(n):if n==0 or n==1:return 1
else:return fib(n-1)+fib(n-2)
def PrintFN(m,n):
a=[]
#for i in range(m,n+1):for j in range(26):if m<=fib(j)<=n:
a.append(fib(j))
#print(a)return a
6-14 計算素數和 (20 分)
本題要求計算輸入兩個正整數x,y(x<=y,包括x,y)素數和。函數isPrime用以判斷一個數是否素數,primeSum函數返回素數和。
輸入格式:
輸入兩個整數。
輸出格式:
[m-n]間的素數和
裁判測試程序樣例:
/* 請在這里填寫答案 */
x,y =map(int, input().split())
print(primeSum(x,y))
輸入樣例:
2 8
輸出樣例:
17
def isPrime(num):
num=int(num)for i in range(2,num):if num%i==0:returnFalsereturnTrue
def primeSum(a,b):
sum=0
for i in range(a,b+1):ifisPrime(i):
sum+=ireturn sum
總結
以上是生活随笔為你收集整理的jmu-python-函数-找钱_python函数题 - osc_wv1mxwu2的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 识别产品外观的合格软件_产品外观质量视觉
- 下一篇: springboot配置文件_Sprin