python函数题

6-1 jmu-python-函数-圆形生成器 10 分)

请大家严格按照下面顺序编写圆形生成器程序。 :

定义函数getCircleArear),可以对指定r计算圆面积。计算公式math库的pi*r*r
定义函数get_rListn),功能:输入n个值放入列表并将列表return
输入n,调用get_rListn)获得列表rList。
遍历rList,对每个元素调用getCircleArea,并按格式输出。

注意:需导入程序中所需要的库,并提交两个函数的定义。

函数接口定义:

getCircleArear) #r代表整数半径
get_rListn) #n代表在函数中输入n个值放入列表。

裁判测试程序样例:

/* 请在这里填写答案 */
n = intinput))
rList = get_rListn)
for e in rList:
    print'{:10.3f}'.formatgetCircleAreae)))
printtyperList))

输入样例:

3
1
2
3

输出样例:

     3.142
    12.566
    28.274
<class 'list'>

import math
def getCircleArear):
    return math.pi*r*r
def get_rListn):
    l=[]
    for i in rangen):
        a=intinput))
        l.appenda)
    return l

n = intinput))
rList = get_rListn)
for e in rList:
    print'{:10.3f}'.formatgetCircleAreae)))
printtyperList))

6-2 jmu-python-组合数据类型-1.计算坐标点欧氏距离 10 分)

读取若干个点,每个点放入元组。并将所有点的点信息、点的类型、点与原点的距离打印出来。

函数接口定义:

readPoint) #从一行以,分隔的数中读取坐标,放入元组并返回
distancepoint) #计算point与原点的距离并返回,要math库中的函数

裁判测试程序样例:

/* 请在这里填写答案 */
n = intinput))
for i in rangen):
    p = readPoint)
    print'Point = {}, type = {}, distance = {:.3f}'.formatp,typep),distancep)))

输入格式:

输入n,代表底下要输入n行点坐标。坐标全部为整数。
点坐标x,y,z以,分隔。坐标全部为整数。

注意:坐标以,分隔,相应位置可能无字符或者包含多个空格字符,读入时按照0进行处理。

输出格式:

见输出样例

输入样例:

5
1,1,1
,,
2,,1
3,1,3
5,,

输出样例:

Point = 1, 1, 1), type = <class 'tuple'>, distance = 1.732
Point = 0, 0, 0), type = <class 'tuple'>, distance = 0.000
Point = 2, 0, 1), type = <class 'tuple'>, distance = 2.236
Point = 3, 1, 3), type = <class 'tuple'>, distance = 4.359
Point = 5, 0, 0), type = <class 'tuple'>, distance = 5.000
import math

def readPoint):
    #从一行以,分隔的数中读取坐标,放入元组并返回
    a=input).split',')
    for i in rangelena)):
        try:
            if evala[i])>0:
                a[i]=inta[i])
        except:
            a[i]=0
    return tuplea)
def distancepoint):
    #计算point与原点的距离并返回,要math库中的函数
    sum=0
    for i in range3):
        sum=sum+point[i]*point[i]
    return math.sqrtsum)

n = intinput))
for i in rangen):
    p = readPoint)
    print'Point = {}, type = {}, distance = {:.3f}'.formatp,typep),distancep)))

6-3 jmu-python-组合数据类型-2.坐标点分类 10 分)

在上题1.计算坐标点欧氏距离)的基础上。将每个点根据距离原点的远近分成两类,一类是小于r的点,一类是大于等于r的点。

步骤如下:

调用ClassifyPointspoints, r)函数根据输入的半径r进行分类,将所有<r的点放入a列表,>=r的点放入b列表。然后将a,b列表以元组的方式返回赋值给pointsTuple
pointsTuple直接输出。
调用printPointsTuplepointsTuple, r),将<r>=r的点集合分情况输出,输出还需包含每个点集的平均距离。

函数接口定义:

readPoint) #从一行以,分隔的数中读取坐标,放入元组并返回。如果相应位置无数据,按0处理。
distancepoint) #计算point与原点的距离并返回,要math库中的函数
ClassifyPointspoints, r): #根据r将points中的点分成两类放入两个列表,距离小于r与大于等于r。然后将两个列表以元组的形式返回
avgDistancepointList): #计算列表pointList中的所有点到原点的平均距离,可利用distancep)函数
printPointsTuplepsTuple, r): #将元组psTuple中的数据按照输出样例格式输出。输出顺序由psTuple中点列表的顺序决定。

裁判测试程序样例:

/* 请在这里填写答案 */
n = intinput))
r = intinput))
points = []
for i in rangen):
    p = readPoint)
    points.appendp)
    print'Point = {}, type = {}, distance = {:.3f}'.formatp,typep),distancep)))

pointsTuple = ClassifyPointspoints, r)
print"pointsTuple = {}".formatpointsTuple))
printPointsTuplepointsTuple,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 = <class 'tuple'>, distance = 1.732
Point = 0, 0, 0), type = <class 'tuple'>, distance = 0.000
Point = 2, 3, 5), type = <class 'tuple'>, distance = 6.164
Point = 3, 1, 3), type = <class 'tuple'>, distance = 4.359
Point = 5, 0, 0), type = <class 'tuple'>, 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 in rangelena)):
        try:
            if evala[i])>0:
                a[i]=inta[i])
        except:
            a[i]=0
    return tuplea)
def distancepoint):
    sum=0
    for i in range3):
        sum+=point[i]**2
    return math.sqrtsum)
def ClassifyPointspoints, r):
    a,b=[],[]
    for i in rangelenpoints)):
        if distancepoints[i])<r:
            a.appendpoints[i])
        else:
            b.appendpoints[i])
    z=a,b)
    return z
def avgDistancepointList):
    sum=0
    for i in rangelenpointList)):
        sum+=distancepointList[i])
    return sum/lenpointList)
def printPointsTuplepsTuple, r):
    print"distance < {}, avgDistance = {:.3f}, points = {}".formatr,avgDistancepsTuple[0]),psTuple[0]))
    print"distance >= {}, avgDistance = {:.3f}, points = {}".formatr,avgDistancepsTuple[1]),psTuple[1]))

n = intinput))
r = intinput))
points = []
for i in rangen):
    p = readPoint)
    points.appendp)
    print'Point = {}, type = {}, distance = {:.3f}'.formatp,typep),distancep)))

pointsTuple = ClassifyPointspoints, r)
print"pointsTuple = {}".formatpointsTuple))
printPointsTuplepointsTuple,r)

6-4 jmu-python-组合数据类型-3.二维坐标点统计 15 分)

随机生成n个点并存入字典,每个点的坐标为x, y),坐标x、y的取值范围是[0,10]之间的整数。
随机生成点的过程中可能会产生重复的点两个点的坐标值一样),需记录该点生成的次数,如在
整个生成点的过程中生成了3个坐标为2,1)的点,那么需将3作为点生成次数纪录下来。
最后在字典中查询3次点坐标,并返回查询结果。

建议:使用字典存储点。
思考:如何在此基础上使用蒙特卡洛方法计算圆周率。

步骤如下:
输入n代表要产生n个点
输入x代表随机数种子(注意:设置种子前需将x转化为整型)

调用generatePointn)函数生成n个点,每个点包含x,y坐标,将x,y)存为元组,然后将该元组作为元素放入列表可放重复的点坐标),并将该列表返回。
调用createPointDictpList)将步骤1生成的点列表pList中的每个点放入字典pDict中,字典的键为点元组)值为出现次数
调用doQuerypDict, p): 在pDict中查询p,如果查到则输出点即出现次数,否则输出Not Found

注意:需要导入random

函数接口定义:

generatePointsn) #产生n个2维坐标点放入列表并返回该列表
createPointDictpList) #将pList中的节点加入字典并统计出现次数,然后返回字典
doQuerypDict, p) #在pDict中查询p,如果查到则输出该点及其出现次数,否则输出'Not Found'。

裁判测试程序样例:

/* 请在这里填写答案 */
n = intinput))  
seedintinput)))
pList = generatePointsn)
pDict = createPointDictpList)
for i in range3):#查询3次
    x, y = [inte) for e in input).split',')]
    doQuerypDict, 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 generatePointsn):
    #产生n个2维坐标点放入列表并返回该列表
    l=[]
    for i in rangen):
        x,y=randint0,10),randint0,10)
        z=x,y)
        l.appendz)
    return l
def createPointDictpList):
    #将pList中的节点加入字典并统计出现次数,然后返回字典
    s={}
    for i in pList:
        if i in s:
            s[i]+=1
        else:
            s[i]=1
    return s
def doQuerypDict, p):
    #在pDict中查询p,如果查到则输出该点及其出现次数,否则输出'Not Found'if p in pDict:
        print"{} = {}".formatp,pDict[p]))
    else:
        print"Not Found")

n = intinput))  
seedintinput)))
pList = generatePointsn)
pDict = createPointDictpList)
for i in range3):#查询3次
    x, y = [inte) for e in input).split',')]
    doQuerypDict, x, y))

6-5 jmu-python-判断质数 10 分)

本题要求实现一个函数,判断参数是否是质数,是的话返回True,否则返回False

注意:函数中要有异常处理,如果参数不是整数,返回False

函数接口定义:

def isPrimenum)

裁判测试程序样例:


/* 请在这里填写答案 */
num=input)
if isPrimenum):
    print'yes')
else:
    print'no')

输入样例1:

ab

输出样例1:

no

输入样例2:

1.1

输出样例2:

no

输入样例3:

11

输出样例3:

yes


def isPrimenum):
    try:
        num=intnum)
        for i in range2,num):
            if num%i==0:
                return False
        return True
    except:
        return False
num=input)
if isPrimenum):
    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元。

函数接口定义:

giveChangemoney) #money代表要找的钱,为整数。该函数经过计算,然后按照格式"要找的钱 = x*10 + y*5 + z*1"直接输出。

裁判测试程序样例:

/* 请在这里填写答案 */
n =  intinput))
for i in rangen):
    giveChangeintinput)))

输入样例:

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 giveChangea):
    a10, a5, a1 =  0, 0, 0
    a10 = a//10
    a5 = a%10)//5
    a1 = a%10)%5
    print"{} = {}*10 + {}*5 + {}*1".formata, a10, a5, a1))
    

6-7 jmu-python-杨辉三角 10 分)

根据输入的n打印n行杨辉三角型。

函数接口定义:

printYanghuin):#打印n行杨辉三角型

裁判测试程序样例:

/* 请在这里填写答案 */
n = intinput))        
printYanghuin)

输入格式:

输入n,转化为整数

输出格式:

每个数后面均有一个空格。

输入样例:

5

输出样例:

    1 
   1 1 
  1 2 1 
 1 3 3 1 
1 4 6 4 1 


def printYanghuin):
    num=[]
    for i in rangen+1):
        num+=[[]]
        for j in rangen+1):
            num[i]+=[0]
    num[1][1]=1
    for i in range2,n+1):
        for j in range1,n+1):
            num[i][j]=num[i-1][j]+num[i-1][j-1]
    for i in range1,n+1):
        for k in rangen-i):
            print"",end=' ')
        for j in range1,i+1):
            printnum[i][j],end=' ')
        print)



n = intinput))        
printYanghuin)

6-8 jmu-java&python-统计字符个数 10 分)

编写程序统计1行字符串中:

不同字符的个数。
每种字符出现的次数。

函数接口定义:

Freqline) 

函数功能:该函数统计不同字符出现的次数,并最后按照字符升序进行输出。输出格式见输出样例。
参数说明:line为需要统计的字符串。

裁判测试程序样例:

/* 请在这里填写答案 */
line = input)
Freqline)

输入样例:

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 Freqline):
    words=line
    s={}
    for i in words:
        if i in s:
            s[i]+=1
        else:
            s[i]=1
    s=lists.items))
    printlens))
    s.sortkey=lambda x:x[0])
    for i in rangelens)):
        word,count=s[i]
        print"{} = {}".formatword,count))

line = input)
Freqline)

6-9 6-1.使用函数求特殊a串数列和 30 分)

给定两个均不超过9的正整数a和n,要求编写函数fna,n) 求a+aa+aaa++⋯+aa⋯aan个a)之和,fn须返回的是数列和

函数接口定义:


fna,n)
其中 a 和 n 都是用户传入的参数。 a 的值在[1, 9]范围;n 是[1, 9]区间内的个位数。函数须返回级数和

裁判测试程序样例:


/* 请在这里填写答案 */
		 
a,b=input).split)
s=fninta),intb))
prints)

输入样例:

在这里给出一组输入。例如:

2 3

输出样例:

在这里给出相应的输出。例如:

246
def fna,n):
    sum=0
    for i in range1,n+1):
        c=a
        for j in range0,i-1):
            c=a+c*10
        sum=sum+c
    return sum

6-10 6-2.使用函数求素数和 20 分)

使用函数求素数和

primep), 其中函数prime当用户传入参数p为素数时返回True,否则返回False. PrimeSumm,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n。

函数接口定义:

在这里描述函数接口:
primep),返回True表示p是素数,返回False表示p不是素数
PrimeSumm,n),函数返回素数和

裁判测试程序样例:


/* 请在这里填写答案 */

m,n=input).split)
m=intm)
n=intn)
printPrimeSumm,n))

输入样例:

在这里给出一组输入。例如:

1 10

输出样例:

在这里给出相应的输出。例如:

17
def primep):
    if p<=1:
        return False
    for i in range2,p):
        if p%i==0:
            return False
    return True

def PrimeSumm,n):
    sum=0
    for i in rangem,n+1):
        if primei):
            sum+=i
    return sum

6-11 6-3 使用函数统计指定数字的个数 20 分)

本题要求实现一个统计整数中指定数字的个数的简单函数。

CountDigitnumber,digit )

其中number是整数,digit为[1, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。

函数接口定义:

在这里描述函数接口。例如:
CountDigitnumber,digit ),返回digit出现的次数

裁判测试程序样例:


/* 请在这里填写答案 */

number,digit=input).split)
number=intnumber)
digit=intdigit)
count=CountDigitnumber,digit )
print"Number of digit 2 in "+strnumber)+":",count)

输入样例:

在这里给出一组输入。例如:

-21252 2

输出样例:

在这里给出相应的输出。例如:

Number of digit 2 in -21252: 3
def CountDigitnumber,digit ):
    count=0
    if number<0:
        number=-number
    while number>0:
        i=number%10
        if i==digit:
            count+=1
        number//=10
    return count

6-12 6-5.使用函数求余弦函数的近似值 20 分)

本题要求实现一个函数,用下列公式求cosx)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加):

cos x) = x^0 / 0! – x^2 / 2! + x^4 / 4! – x^6 / 6! + ?

函数接口定义:funcoseps,x ),其中用户传入的参数为eps和x;函数funcos应返回用给定公式计算出来,保留小数4位。

函数接口定义:

函数接口:
funcoseps,x ),返回cosx)的值。

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:


/* 请在这里填写答案 */

eps=floatinput))
x=floatinput))
value=funcoseps,x )
print"cos{0}) = {1:.4f}".formatx,value))

输入样例:

在这里给出一组输入。例如:

0.0001
-3.1

输出样例:

在这里给出相应的输出。例如:

cos-3.1) = -0.9991
def funcoseps,x ):
    sum=0
    i=0
    count=0
    while True:
        c=1
        for j in range1,2*i+1):
            c=c*j
        if x**2*i))/c)<eps:
            return sum
            break
        else:
            if count%2==0:
                sum=sum+x**2*i))/c
            else:
                sum=sum-x**2*i))/c
        i+=1
        count+=1

6-13 6-4.使用函数输出指定范围内Fibonacci数的个数 20 分)

本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。 所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,fib0)=fib1)=1。其中函数fibn)须返回第n项Fibonacci数;函数PrintFNm,n)用列表返回[m, n]中的所有Fibonacci数。

函数接口定义:

在这里描述函数接口。例如:
fibn),返回fibn)的值
PrintFNm,n),用列表返回[m, n]中的所有Fibonacci数。

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
/* 请在这里填写答案 */

m,n,i=input).split)
n=intn)
m=intm)
i=inti)
b=fibi)
print"fib{0}) = {1}".formati,b))
fiblist=PrintFNm,n)
printlenfiblist))

输入样例:

在这里给出一组输入。例如:

20 100 6

输出样例:

在这里给出相应的输出。例如:

fib6) = 13
4
def fibn):
    if n==0 or n==1:
        return 1
    else:
        return fibn-1)+fibn-2)

def PrintFNm,n):
    a=[]
    #for i in rangem,n+1):
    for j in range26):
        if m<=fibj)<=n:
            a.appendfibj))
    #printa)
    return a

6-14 计算素数和 20 分)

本题要求计算输入两个正整数x,yx<=y,包括x,y)素数和。函数isPrime用以判断一个数是否素数,primeSum函数返回素数和。

输入格式:

输入两个整数。

输出格式:

[m-n]间的素数和

裁判测试程序样例:

/* 请在这里填写答案 */

x,y =mapint, input).split))
printprimeSumx,y))

输入样例:

2 8

输出样例:

17
def isPrimenum):
    num=intnum)
    for i in range2,num):
        if num%i==0 :
            return False
    return True
def primeSuma,b):
    sum=0
    for i in rangea,b+1):
        if isPrimei):
            sum+=i
    return sum       


Published by

风君子

独自遨游何稽首 揭天掀地慰生平