鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题87(答题领鱼币)

[复制链接]
发表于 2017-8-30 09:12:13 | 显示全部楼层
  1. def newfib(n):
  2.   if not isinstance(n, int) or n < 1:
  3.       print('传入的不是正整数!')
  4.       return None
  5.   listfib=[1,]
  6.   if n == 1:
  7.       print(n)
  8.       return None
  9.   else:
  10.     listfib.append(2)
  11.     for i in range(2, n):
  12.       temp = listfib[i-1] + listfib[i-2]
  13.       if(temp % 2 == 0):
  14.           temp = temp // 2
  15.       listfib.append(temp)
  16.   print(listfib)

  17. # newfib(30)
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 10:35:46 | 显示全部楼层
def newfib(n):
    a,b=1,2
    if n==1:     
        print a
    elif n==2:      
        print b
    else:
        print a,b
        for i in range(n-2):
            a,b=b,a+b
            if b%2==0:
                b=b/2
            print b

if __name__=='__main__':
    n=int(input('n'))
    newfib(n)

小白写的有点烂,见谅

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 10:48:09 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-30 15:19:11 | 显示全部楼层
对不对
  1. def new(n):
  2.     if n == 1:
  3.         return [1]
  4.         
  5.     else:
  6.         a,b=1,2
  7.         while n:
  8.             print(a)
  9.             a,b = b,a+b
  10.             if b%2 == 0:
  11.                 b = b//2

  12.             n -= 1

  13. a = input('请输入数字:')
  14. print('结果为:')
  15. b = int(a)   
  16. print(new(b))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 16:20:15 | 显示全部楼层
def newfib(n):
    n1, n2 = 1, 2
    for i in range(1, n):
        n1, n2 = n2, (n1 + n2) // 2 if (n1 + n2) % 2 == 0 else n1+n2
    return n1

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 16:20:51 | 显示全部楼层

看看

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-30 18:47:07 | 显示全部楼层
本帖最后由 不知道干啥 于 2017-8-30 18:49 编辑

def newfib(n):
    a,b = 1,2
    while n:
        print(a)
        a,b = b,a+b
        n -=1
        if b%2==0:
            b = int(b/2)

   


newfib(12)

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 19:35:15 | 显示全部楼层
  1. def newfib(n):
  2.         n1 = 1
  3.         n2 = 2
  4.         n3 = 1
  5.         num = [1,]
  6.         if n < 0:
  7.                 print('输入错误!')
  8.                 return -1
  9.         elif n == 1:
  10.                 return num
  11.         else:
  12.                 num.append(n2)
  13.                 while (n - 2) > 0:
  14.                         n3 = n1 + n2
  15.                         if (n3 % 2) != 0:
  16.                                 num.append(n3)
  17.                                 n1 = n2
  18.                                 n2 = n3
  19.                         else:
  20.                                 n3 = n3//2
  21.                                 num.append(n3)
  22.                                 n1 = n2
  23.                                 n2 = n3
  24.                         n -= 1
  25.                 return num
  26. number = int (input('请输入一个整数:'))
  27. print (newfib(number))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-31 09:00:09 | 显示全部楼层
def nfibs(num):
        nfibs=[1,2]
        for i in range(num-2):
                nfibs.append(nfibs[-2]+nfibs[-1])
                if nfibs[-1]%2==0:
                        nfibs[-1]=nfibs[-1]/2
        print nfibs

nfibs(12)
1,2,3,,5,4,9,13,11,12,23,35,29

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-31 16:02:40 | 显示全部楼层
看看答案对不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-31 17:22:19 | 显示全部楼层
来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-31 21:00:39 | 显示全部楼层
def newfib(n):
    list0 = []
    if n == 1:
        list0.append(1)
        return(list0)
    if n == 2:
        list0 = [1,2]
        return(list0)
    elif n > 2:
        list0 = [1,2]
        for i in range(3,n+1):
            num = int(list0[i-2] + list0[i-3])
            if num % 2 == 0:
                num = int(num/2)
                list0.append(num)
               
            else:
                list0.append(num)
               
        return(list0)
n = int(input('请输入n值:'))
print(newfib(n))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-31 23:05:30 | 显示全部楼层
def fib(n):
    a,b=1,2
    str="";
    while n:
        str += "%d "%(a);
        a,b=b,a+b
        if b%2 == 0:
            b /= 2
        n-=1
    print(str);

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 17:03:10 | 显示全部楼层
  1. # -*- coding: cp936 -*-
  2. def newfib(n):
  3.      if (n == 1):
  4.           return 1
  5.      elif (n == 2):
  6.           return 2
  7.      else:
  8.           if (newfib(n-1) + newfib(n-2)) % 2 == 0:
  9.                return (newfib(n-1) + newfib(n-2))/2
  10.           else:
  11.                return newfib(n-1) + newfib(n-2)

  12. N = int(input('请输入一个正整数:'))
  13. total = newfib(N)
  14. print('新Fibonacci数列的第%d项是%d'%(N,total))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 17:19:27 | 显示全部楼层
def newfib(n):
    a, b = 1, 2
    thelist = [1, 2]
    while  b < n :
        
        if (a + b) % 2 == 0:
            a, b =b, int((a + b) / 2)
            thelist.append(b)
        else:
            a, b = b, a + b
            thelist.append(b)
    for each in thelist:
        print(each)

if __name__ =='__main__':
    newfib(100)

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-1 21:18:11 From FishC Mobile | 显示全部楼层
def f():
    q = list(range(1,3))
    while True:
        yield q[0]
        _next = q[0] + q[1]
        if _next%2 == 0:
            _next //= 2
        q = [q[1], _next]

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-2 16:37:54 | 显示全部楼层
  1. while True:
  2.     def fib(n):
  3.            
  4.         if n>2 :
  5.             f=fib(n-1)+fib(n-2)
  6.             if f%2==0:
  7.                
  8.                 return f/2
  9.             else:
  10.                 return f
  11.         if n==1:
  12.             return 1
  13.         else:
  14.             return 2
  15.     t=int(input("请输入n的值:"))
  16.     print(int(fib(t)))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-2 23:12:33 | 显示全部楼层
  1. def newfib(n):
  2.     if n==1:
  3.         return 1
  4.     if n==2:
  5.         return 2
  6.     else:
  7.         if (newfib(n-1)+newfib(n-2))%2:
  8.             return int((newfib(n-1)+newfib(n-2)))
  9.         else:
  10.             return int((newfib(n-1)+newfib(n-2))/2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-7 17:38:10 | 显示全部楼层
这个比较困难,求答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-11 19:36:06 From FishC Mobile | 显示全部楼层
不知道啊,真心不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表