【Python练习】高级语言程序设计(Python)-哈尔滨工业大学mooc第四周编程作业


题目内容:
一个斐波那契数列的前10项为:1,2,3,5,8,13,21,34,55,89,对于一个最大项的值不超过n的斐波那契数列,求值为偶数项的和。
输入样例:
100
输出样例:
44
程序代码:

def fib(x):
    a,b=0,1
    for i in range(x+1):
        a,b=b,a+b
    return a

n=int(input())
i=1
cnt=0
while fib(i)<=n:
    if (fib(i))%2==0:
        cnt+=fib(i)
    i+=1
print(cnt)


题目内容:
若已知1800年1月1日为星期3,则对于一个给定的年份和月份,输出这个月的最后一天是星期几。
输入样例:
2033
12
输出样例:
6
程序代码:

def judge(x):
    if x%4==0 and x%100!=0 or x%400==0:
        return True
    return False
L=[3,4,5,6,0,1,2]
specialYear=[31,29,31,30,31,30,31,31,30,31,30,31]
normalYear=[31,28,31,30,31,30,31,31,30,31,30,31]
endYear=int(input())
month=int(input())
startYear=1800
dayNum=0
for i in range(startYear,endYear):
    if judge(i):
        dayNum+=sum(specialYear)
    else:
        dayNum+=sum(normalYear)
for i in range(month):
    if judge(endYear):
        dayNum+=specialYear[i]
    else:
        dayNum+=normalYear[i]
dayNum=dayNum%7
res=L[dayNum-1]
print(res)


题目内容:
如在汉诺塔游戏中,我们希望A塔上的n个盘子,通过塔B移动到塔C,则对于任意输入的n,给出移动步骤。
输入样例:
2
输出样例:
Move 1 from A to B
Move 2 from A to C
Move 1 from B to C
程序代码:

def hanoi(n,A,B,C):
    if n==1:
        print("Move {:d} from {:s} to {:s}".format(n,A,C))
    else:
        hanoi(n-1,A,C,B)
        print("Move {:d} from {:s} to {:s}".format(n,A,C))
        hanoi(n-1,B,A,C)
n=int(input())
hanoi(n,'A','B','C')

你可能感兴趣的:(Python)