鱼C论坛

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

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

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

# 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 | 显示全部楼层
对不对
def new(n):
    if n == 1:
        return [1]
        
    else:
        a,b=1,2
        while n:
            print(a)
            a,b = b,a+b
            if b%2 == 0:
                b = b//2

            n -= 1

a = input('请输入数字:')
print('结果为:')
b = int(a)   
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 | 显示全部楼层
def newfib(n):
        n1 = 1
        n2 = 2
        n3 = 1
        num = [1,]
        if n < 0:
                print('输入错误!')
                return -1
        elif n == 1:
                return num 
        else:
                num.append(n2)
                while (n - 2) > 0:
                        n3 = n1 + n2
                        if (n3 % 2) != 0:
                                num.append(n3)
                                n1 = n2
                                n2 = n3
                        else:
                                n3 = n3//2
                                num.append(n3)
                                n1 = n2
                                n2 = n3
                        n -= 1
                return num
number = int (input('请输入一个整数:'))
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 | 显示全部楼层
# -*- coding: cp936 -*-
def newfib(n):
     if (n == 1):
          return 1
     elif (n == 2):
          return 2
     else:
          if (newfib(n-1) + newfib(n-2)) % 2 == 0:
               return (newfib(n-1) + newfib(n-2))/2
          else:
               return newfib(n-1) + newfib(n-2)

N = int(input('请输入一个正整数:'))
total = newfib(N)
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 | 显示全部楼层
while True:
    def fib(n):
           
        if n>2 :
            f=fib(n-1)+fib(n-2)
            if f%2==0:
                
                return f/2
            else:
                return f
        if n==1:
            return 1
        else:
            return 2
    t=int(input("请输入n的值:"))
    print(int(fib(t)))

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-9-2 23:12:33 | 显示全部楼层
def newfib(n):
    if n==1:
        return 1
    if n==2:
        return 2
    else:
        if (newfib(n-1)+newfib(n-2))%2:
            return int((newfib(n-1)+newfib(n-2)))
        else:
            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-9-21 08:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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