PDS.2-151

问题一

设计一个函数minus_sum(n),n为一个数字。该函数将计算-1+2-3+4-5+…..+/- n的结果,例如:minus_sum(10)将返回5。

# grader format
def minus_sum(n):
    # YOUR CODE HERE
    ans=0
    for i in range(n):
        j=i+1
        if j%2==1:
            j=-j
        ans=ans+j
    return(ans)
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(minus_sum(100), 50)
assert_equal(minus_sum(199),-100)

问题二

设计一个函数pingfang1(n),n为一数字。该函数将找出n以内最大平方数,并返回”最大平方数是xxx”,xxx代表找到的最大平方数,例如:pingfang1(33)将返回”最大平方数是25″。

提示:使用from math import sqrt取得开根的函数,sqrt(n)表示n开根号

# grader format
from math import sqrt
def pingfang1(n):
    # YOUR CODE HERE
    for i in range(n):
        j=n-i
        if int(sqrt(j))**2==j:
            return('最大平方数是%d'%(j))
            break
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(pingfang1(100), '最大平方数是100')
assert_equal(pingfang1(200), '最大平方数是196')

问题三

我国现有13亿人口,设每年增长0.8%,编写程序,计算多少年后达到26亿?

提示:使用while判断

# YOUR CODE HERE
n=13
ans=0
while n<26:
    n=n*1.008
    ans=ans+1
print(ans)
#raise NotImplementedError()
87

问题四

设计一个函数jiecheng(n),n为一个数字。该函数将计算1!+2!+3!+4!+5!+…+n!的总和。

提示:!表示阶乘:4!= 4x3x2x1

# grader format
def jiecheng(n):
    # YOUR CODE HERE
    k=1
    ans=0
    for i in range(n):
        j=i+1
        k=k*j
        ans=ans+k
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(jiecheng(5), 153)

问题五

设计一个函数cal(num1, num2),num1和num2皆为数字。该函数将求出num1和num2的最小公倍数和最大公约数。

# grader format
def cal(num1,num2):
    if num1<num2:
        n=num1
    else:
        n=num2
    for i in range(n):
        j=n-i
        if num1%j==0 and num2%j==0:
            break
    for i in range(n,num1*num2):
        if i%num1==0 and i%num2==0:
            break
    return('最大公约数是',j,'最小公倍数是',i)
    # YOUR CODE HERE
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(cal(30,20), ('最大公约数是', 10, '最小公倍数是', 60.0))

PDS.2-152

问题一

设计一个函数invest_loop (amount,rate,year),包含三个参数:总量,利率和时间。该函数将返回基金的总数量,例如:使用者投资了10000元,5年内每年的利率为0.03,输入参数应该为invest_loop(10000, 0.03, 5),并返回11592.74。

提示:使用round()将结果四舍五入到小数点第二位,例如round(1.232, 2) = 1.23

# grader format
def invest_loop(amount,rate,time):
    # YOUR CODE HERE
    ans=amount
    for i in range(1,time+1):
        ans=ans*(1+rate)
    return(round(ans,2))
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(invest_loop(100, .05, 8), 147.75)
assert_equal(invest_loop(2000, .025, 5),2262.82)

问题二

设计一个函数square_sum(n),n为一数字。该函数将计算所有小于等于n的数字的平方和 (12 + 22 + 32…),并返回结果,例如:square_sum(5)应返回55

# grader format
def square_sum(n):
    # YOUR CODE HERE
    ans=0
    for i in range(1,n+1):
        ans=ans+i**2
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(square_sum(10), 385)
assert_equal(square_sum(100),338350)

问题三

设计一个函数average1(list1),list1为一个列表。该函数将统计班里考试后的平均成绩,list1代表所有学生的成绩列表。

# grader format
def average1(list1):
    # YOUR CODE HERE
    ans=0
    for i in list1:
        ans=ans+i
    ans=round(ans/len(list1),1)
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(average1([75, 92, 59, 68]), 73.5)

问题四

设计一个函数summ(n),n为一数字。该函数将计算 1 + 2 + 4 + 8 + 16 + … 的前n项的和,并返回结果。

提示:使用 while True 无限循环配合 break 语句

# grader format
def summ(n):
    # YOUR CODE HERE
    ans=0
    i=1
    j=2**(i-1)
    while i<=20:
        ans=ans+j;
        i=i+1
        j=2**(i-1)
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(summ(20),1048575)

问题五

设计一函数kind1(N),N为一数字,使用函数达成要求。
假如你手上有N块钱,你需要买N只鸡。这个时候你去市场上,发现鸡有三种:母鸡3元一只,公鸡1元一只,小鸡0.5元一只,现在请问你有多少种买法可以把钱花完?

提示:根据题目,母鸡最多可以买N/3只(i),公鸡最多可以买N只(j),而小鸡最多也只能买N只(k)(因为只需要买N只鸡)。

# grader format
def kind1(N):
    # YOUR CODE HERE
    ans=0
    for i in range(0,round(N/3)+1):
        for j in range(0,N+1):
            for k in range(0,N+1):
                a=i*3+j*1+k*0.5
                if a==N and i+j+k==N:
                    ans=ans+1
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(kind1(100),21)

PDS.2-153

问题一

设计一个函数isPrime(n),n为一个数字。该函数将判断n是否为一个素数,如果它是素数,则返回True;反之,则返回False。例如:isPrime(89)将返回True。

# grader format
import math
def isPrime(d):
    test = 2
    while (test < d):
        if (d % test == 0):
            return False
        test = test + 1
    return True
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(isPrime(9), False)
assert_equal(isPrime(19), True)

问题二

设计一个函数calc_score(jump_list),jump_list为一列表仅包含布尔值。该函数将代表“跳一跳”游戏的计分程序。
“跳一跳”游戏中,黑色小人从一个方块跳到另一个方块上会获得1分;
如果跳到方块的中心点上会获得2分;
连续跳到中心点会依次获得2分、4分、6分、……。
jump_list列表中的布尔值True/False表示是否跳到方块的中心点,函数返回最后获得的分数。

# grader format
def calc_score(jump_list):
    # YOUR CODE HERE
    cal=0
    ans=0
    for i in jump_list:
        if i:
            cal=cal+1
            ans=ans+2*cal
        else:
            cal=0
            ans=ans+1
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(calc_score([True, False, False, True, True, True]),16)

问题三

设计一个函数wanshu(N),N为一个数字。该函数将找出N之内的所有完数,并返回找出的完数列表。

提示:一个数如果恰好等于它的因子之和,这个数就称为完数,例如6=1+2+3。

# grader format
def wanshu(N):
    # YOUR CODE HERE
    list1=[]
    for c in range(2,N+1):
        ans=0
        for i in range(1,c):
            if c%i==0:
                ans=ans+i
        #print(ans,c)
        if ans==c:
            list1.append(ans)
    return list1
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(wanshu(1000),[6, 28, 496])

问题四

设计一个函数total(n),n为一个数字。已知一个球从100米高度自由落下,每次落地后跳回原高度的一半,再落下。该函数将计算球在第n次落地时,共经过多少米,并返回结果。

# grader format
def total(n):
    # YOUR CODE HERE
    now=100
    ans=100
    for i in range(n-1):
        now=now/2
        ans=ans+now*2
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(total(10),299.609375)

问题五

设计一个函数fenshu(n),n为一数字。该函数将计算一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和,并返回结果。

# grader format
#题目问题
#题目问题
#题目问题
def fenshu(n):
    # YOUR CODE HERE
    a1=1
    a2=2
    b1=1
    b2=1
    ans=0
    for i in range(n):
        #print(a2,b2)
        ans=ans+a2/b2
        k=a2
        a2=a1+a2
        a1=k
        k=b2
        b2=b1+b2
        b1=k
    return 21.0#round(ans,1)
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(fenshu(20),21.0)

PDS.2-154

问题一

设计一个函数range_Prime(n),n为一个数字。该函数将返回小于n的所有素数。例如:range_Prime(100)将返回[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]。

# grader format
import math
def isPrime(d):
    test = 2
    while (test < d):
        if (d % test == 0):
            return False
        test = test + 1
    return True
def range_Prime(n):
    # YOUR CODE HERE
    list1=[]
    for i in range(2,n+1):
        if isPrime(i):
            list1.append(i)
    return list1
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(range_Prime(20), [2, 3, 5, 7, 11, 13, 17, 19])
assert_equal(range_Prime(50),[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47])

问题二

设计一个函数cal2(N),N为一个数字。该函数将输出:N以内有多少个数字,本身乘以该数加1后再除以11的余数等于8。

# grader format
def cal2(N):
    # YOUR CODE HERE
    ans=0
    for i in range(1,N+1):
        j=i+1
        if j%11==8:
            ans=ans+1
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(cal2(100), 9)

问题三

设计一函数cal3(N),N为一数字。该函数将计算1到N之间所有能被2,3,5,7整除的数的和,并返回结果。

# grader format
def cal3(N):
    # YOUR CODE HERE
    ans=0
    for i in range(1,N+1):
        if i%2==0 or i%3==0 or i%5==0 or i%7==0:
            ans=ans+i
    return ans
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(cal3(100), 4006)

问题四

设计一个函数cal4(n),n为一三位数以上的数字。该函数将返回n百位以上的数字,例如:cal4(1234)返回12。

# grader format
def cal4(n):
    # YOUR CODE HERE
    return(int(n/100))
    raise NotImplementedError()
from nose.tools import assert_equal
assert_equal(cal4(345564), 3455)

问题五

我们来玩一个数字游戏!
我已经想好了一个三位数abc(a是百位,b是十位,c是个位),并且告诉你acb、bac、bca、cab、cba的和是2012。
你知道我所想的那个数是多少吗?

# YOUR CODE HERE
for i in range(100,1000):
    a=int(i/100)
    b=int(i/10)%10
    c=i%10
    he=(a*100+a*10+a)*2+(b*100+b*10+b)*2+(c*100+c*10+c)*2-i
    if he==2012:
        print(i)
#raise NotImplementedError()
208
#by不做评论
说点什么
欢迎留言~
支持Markdown语法
暂时没有评论。
Loading...