python练习2

1
编写程序,完成下列题目: (1分)

题目内容:

一个斐波那契数列的前10项为:1, 2, 3, 5, 8, 13, 21, 34, 55, 89,对于一个最大项的值不超过n的斐波那契数列,求值为偶数的项的和。


输入格式:

一个正整数n,如100。


输出格式:

值为偶数的项的和,如 2 + 8 + 34 = 44。


输入样例:

100


输出样例:

44


n=input()
sum1=1
sum2=1
sum3=2
count=0
while sum3<=n:
    if sum3%2==0:
        count+=sum3
    sum1=sum2
    sum2=sum3
    sum3=sum1+sum2
print count
另一种方法
def fib(n):
    if n == 0 or n == 1:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)

sum = 0
i = 0
num = int(raw_input())
while fib(i) < num:
    if fib(i) % 2 == 0:
        sum += fib(i)
    i += 1
print sum

若已知1800年1月1日为星期3,则对于一个给定的年份和月份,输出这个月的最后一天是星期几。

输入格式:
两行整数,分别代表年份和月份
输出格式:
星期数,0代表星期日
输入样例:
2033
12
输出样例:
6

def is_leap_year(Year):
     if Year % 4 ==0 and Year % 100 != 0 or Year %400 == 0:
         return True
     else:
         return False

def year_month_days(Year, Month):
    if Month in (1,3, 5, 7 8, 10,12):
        return 31
    elif Month in (4,6, 9, 11):
        return 30
    elif is_leap_year(Year):
        return 29
    else:
        return 28

def year_days(Year):
    if is_leap_year(Year):
        return 366
    else:
        return 365

def weekday_year_month(Year, Month):
    Weekday = 2             
    for year in range(1800, Year):
        Weekday = (Weekday + year_days(year) ) % 7

    for month in range(1, Month +1):
        Weekday = (Weekday + year_month_days(Year, month)) % 7

    print Weekday


Y = int(raw_input())
M = int(raw_input())  

weekday_year_month(Y, M)

题目内容:

如在汉诺塔游戏中,我们希望将塔A上的n个盘子,通过塔B移动到塔C,则对于任意输入的n,给出移动的步骤。


输入格式:

一个正整数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', n, 'from', A, 'to', C
    else:
        hanoi(n - 1, A, C, B)
        print 'Move', n, 'from', A, 'to', C
        hanoi(n - 1, B, A, C)

num = int(raw_input())
hanoi(num, 'A', 'B', 'C')

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值