Python学习~练习(4~6)

练习4:

题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:  某年某月某日是通过输入获取,年需要判断是不是闰年;月份的判断可以让月份之前的月份天数成为固定数字;某日则是最后添加。

代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

year=int(raw_input("年:\n"))

month=int(raw_input("月:\n"))

day=int(raw_input("日:\n"))

months1=[0,31,60,91,121,152,182,213,244,274,305,335,366] #闰年

months2=[0,31,59,90,120,151,181,212,243,273,304,334,365] #平年

if ((year%4==0)and(year%100!=0)) or((year%100==0)and(year%400==0)): 

     Dth=months1[month-1]+day

else:    

    Dth=months2[month-1]+day

print "是该年的第%d天"%Dth


练习5:

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:这个就是一个排序问题

代码:

#冒泡排序

a = [int(i) for i in raw_input("请输入:").split()]

m = len(a)

while m!=1:

    for i in range(m-1):

        if a[i]>a[i+1]:

            x = a[i]

            a[i] = a[i+1]

            a[i+1] = x

   m -= 1print a

#列表sort

l = [int(i) for i in raw_input("请输入: ").split()]

l.sort()

print l


练习6:

题目:斐波那契数列。

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

在数学上,费波那契数列是以递归的方法来定义:

F0 = 0    (n=0)

F1 = 1    (n=1)

Fn = F[n-1]+ F[n-2](n=>2)

代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fib(n):

    a,b = 1,1   

    for i in range(n-1):

        a,b = b,a+b   

    return a

# 输出了第10个斐波那契数列

print fib(10)


#第二种方法 使用递归

def fib(n):

    if n==1 or n==2:

        return 1

    return fib(n-1)+fib(n-2)

# 输出了第10个斐波那契数列

print fib(10)


#第三种方法 输出指定个数的斐波那契数列

def fib(n):

    if n == 1:

        return [1]

    if n == 2:

        return [1, 1]

    fibs = [1, 1]

    for i in range(2, n):

        fibs.append(fibs[-1] + fibs[-2])

    return fibs

# 输出前 10 个斐波那契数列

print fib(10)


2018年2月24日---记!

你可能感兴趣的:(Python学习~练习(4~6))