鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 6

[复制链接]
发表于 2018-9-6 20:36:21 | 显示全部楼层
j = 1
while j>0:
    n = int(input('请输入数列长度n:'))
    a = [1,1]
    if n >=3:
        for i in range(n-2):
            a.append(a[i]+a[i+1])
        print(a)
    elif n==2:
        print(a)
    elif n==1:
        print(a[0])
    else:
        print('让你输入长度,你个笨蛋,滚回去重新输入')
    j += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-12 16:15:40 | 显示全部楼层
def fib():
    n = int(input("请输入一个数:"))
    a,b =1,1
    for i in range(n):
        print(a,end=" ")
        a,b = b,a+b

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

使用道具 举报

发表于 2018-10-18 17:01:57 | 显示全部楼层
list=[]
f0=0
f1=1
list.append(f0)
list.append(f1)

for i in range(20):
    fn=f0+f1
    f0=f1
    f1=fn
    list.append(fn)
print(list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 17:40:58 | 显示全部楼层
def feb(n):
    if n <= 1:
        return 1
    else:
        return feb(n-1) + feb(n-2)

m = int(input('Please:'))
list = [1]
for i in range(1,m+1):
    list.append(feb(i))

print(list)


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

使用道具 举报

发表于 2018-10-27 15:21:24 | 显示全部楼层
本帖最后由 I_love_fishc_tj 于 2018-10-27 15:29 编辑

z = [0, 1]
for i in range(10):
    z.append(z[-2] + z[-1])
print(z)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-3 21:41:04 | 显示全部楼层
def fib(n):
    if n == 1:
        return 1
    if n == 2:
        return 1
    if n > 2:
        return fib(n-1) + fib(n-2)

a = int(input("请输入要显示的第几个数:"))
print(fib(a))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-21 13:53:04 | 显示全部楼层
写了两个。
一个是函数循环输出。
一个是递归函数计算。
#函数循环的方式输出前n个斐波那数列
n=input('请输入斐波那数列的序列号:')
def fibonacci(n):
        a=0;b=1
        print(a,b,end=' ')
        for i in range(n-2):
                c=a+b
                print(c,end=' ')
                a=b;b=c
                
fibonacci(n)

#递归函数方法返回第n个斐波那数列的值
def fib(n):
        if n==1:
                #print(0,end=' ')
                return 0
        elif n==2:
                #print(1,end=' ')
                return 1
        elif n>2:
                #print (fib(n-1)+fib(n-2),end=' ')
                return fib(n-1)+fib(n-2)
        else:
                return None
print(fib(n))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-31 18:02:19 | 显示全部楼层
都写得太好了,最喜欢这个:
def do3(n):
    x = 1
    y = 1
    yield x
    for i in range(2, n):
        x, y = y, x + y
        yield x

for i in do3(100):
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-14 21:52:51 | 显示全部楼层
def fib(n):
    fib =[0,1]
    for i in range(2,n):
        fib.append(fib[i-1]+fib[i-2])
    for i in range(n):
        print(fib[i],end=' ')
fib(10)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-22 10:21:00 | 显示全部楼层
def fib(num):

    L = [0, 1]
    for n in range(2, num):
        L.append(L[n-1] + L[n-2])

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

使用道具 举报

发表于 2019-3-7 16:47:31 | 显示全部楼层
#1,1,2,3,5,8,13
#1,2,3,4,5
def fib(n):
    n1 = 1
    n2 = 1
    n3 = 1
   
    while(n-2) > 0:   
        n3 = n2 + n1
        n1 = n2
        n2 = n3
        n -= 1

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

使用道具 举报

发表于 2019-3-10 22:31:17 | 显示全部楼层
output=int(input("请输入需要求的fibonacci数列的长度:"))
fib=list(range(output))
i=0
while(True):
    i+=1
    if i>=output:
        break
    if i==1:
        fib[i]=1
    else:
        fib[i]=fib[i-1]+fib[i-2]

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

使用道具 举报

发表于 2019-4-26 17:14:07 | 显示全部楼层
肯定是递归la!
def fib(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n-1) + fib(n-2)

for i in range(1, 11):
    print(fib(i))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 17:08:32 | 显示全部楼层
i=0
ii=1
iii=0
a=[0,1]
while iii<10000:
    iii=i+ii
    b=[iii]
    a=a+b
    i=ii
    ii=iii
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-7 17:29:10 | 显示全部楼层
def fib(n):
    lista = [1,1]
    if n < 3:
        return lista[:n]
    else:
        for i in range(2,n):
            lista.append(lista[i-1] + lista[i-2])
        return lista
if __name__ == "__main__":
    print(fib(4))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-8 09:34:11 | 显示全部楼层
本帖最后由 糠爸 于 2019-7-8 09:50 编辑

请大师们指正!

#题目:斐波那契数列。
#程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
#a(n)=a(n-1)+a(n-2)

list = []
stop_point = int(input("请输入斐波那契额数列的终点项数:"))

if stop_point < 3:
        print("斐波那契额数列至少包括3项!")
        stop_point =int(input("请输入斐波那契额数列的终点项数:"))

a0 = int(input("请输入斐波那契额数列的第一项整数:"))
a1 =int(input("请输入斐波那契额数列的第一项整数:"))
list.extend([a0,a1])

for an in range((stop_point-1)):
        an = list[-2] + list[-1]
        list.append(an)

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

使用道具 举报

发表于 2019-7-8 09:36:18 | 显示全部楼层
本帖最后由 糠爸 于 2019-7-8 09:49 编辑
#题目:斐波那契数列。
#程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
#a(n)=a(n-1)+a(n-2)

list = []
stop_point = int(input("请输入斐波那契额数列的终点项数:"))

if stop_point < 3: 
        print("斐波那契额数列至少包括3项!")
        stop_point =int(input("请输入斐波那契额数列的终点项数:")) 

a0 = int(input("请输入斐波那契额数列的第一项整数:")) 
a1 =int(input("请输入斐波那契额数列的第一项整数:")) 
list.extend([a0,a1])

for an in range((stop_point-1)):
        an = list[-2] + list[-1]
        list.append(an)

print(list)



哈哈,突然发觉直接可以上传编码了,高兴!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-8 13:46:36 | 显示全部楼层
#题目:斐波那契数列。又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。从第三项开始,后项为前两项之和
#试通过程序输出数列前100项。

#解法1,采用循环迭代变量,
def answer1():
    n1 = 1                     #定义数列第1项
    n2 = 1                     #定义数列第2项
    list1 = [n1,n2]
    for i in range(1,99):      #循环98次生成3-100项
        n = n1 + n2
        list1.append(n)        #计算后项并从后加入目标数列
        n1, n2 = n2, n           #重新将n2,n的数据赋值给n1,n2进行迭代。
    print(list1)
    print(len(list1))

#解法2:可选择传入数列项数进行迭代,默认值为100,采用while循环
def answer2(t=100):
    t = t
    n1 = 1                      # 定义数列第1项
    n2 = 1                      # 定义数列第2项
    list1 = [n1, n2]
    loop = 0                    # 定义循环控制变量
    while loop < t-2:
        n = n1 + n2
        list1.append(n)
        n1, n2 = n2, n
        loop += 1
    print(list1)

#解法3:采用自定义函数Fib(n),输入参数后通过通项公式递归求解前20项。
def answer3(n=20):
    def Fib(n):
        if n ==1 or n == 2:
            return 1                         #递归终点
        else:
            return Fib(n-1) + Fib(n-2)       #抽象出通项公式递归 
    list1 = []                               #值加入列表输出
    for i in range(1,n+1):
        list1.append(Fib(i))
    print(list1)
    
if __name__ == '__main__':
    answer1()
    answer2()
    answer3(20)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-25 19:15:32 | 显示全部楼层
def Fabs(x):
          if (x==1) or (x == 2):
                    return 1
          else:
                    return Fabs(x-1)+Fabs(x-2)
def main():
          for i in range(10):
                    print(Fabs(i))

if __name__=='__main__':
         main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-15 11:07:16 | 显示全部楼层
n=int(input("求斐波那契数列第_个数:"))
list=[0,1]
def fs(n):
    i=1
    for i in range(n):
        list.append(list[i-1]+list[i-2])
        i+=1
    return list[n-1]
if n==1:
    print(0)
elif n==1:
    print(1)
else:
    print(fs(n))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 11:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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