Python学习笔记

斐波那契数列的两种求法:
斐波拉契数列:这个数列从第三项开始,每一项都等于前两项之和。(10分)
题目内容:

已知斐波拉契数列的前两项都是1,我们定义求斐波拉契数列的第n项(n<=50)的函数为fbnq,程序主体如下:

n=int(input(""))
print(fbnq(n))
请补充完成对fbnq函数的定义。

输入格式:

共一行,为一个正整数。

输出格式:

共一行,为一个正整数。

输入样例:

7

输出样例:

13

时间限制:500ms内存限制:32000kb

def fbnq(n):
    L=[1,1]
    while len(L)<n:
        L.append(L[-1]+L[-2])
        
    return L[-1] 
n=int(input(""))
print(fbnq(n))

这样可以AC,但是还有一种递归做法。

def fbnq(n):
	if(n==1):
		return 1
	elif(n==2):
		return 1
	else:
		return fbnq(n-1)+fbnq(n-2)

这样会超时

求两个数的最大公约数。(10分)
题目内容:

输入两个正整数num1和num2(不超过1000),求它们的最大公约数并输出。

我们定义求最大公约数的函数为hcf,给出程序主体如下:
num1=int(input(""))
num2=int(input(""))
print(hcf(num1,num2))
请补充完成hcf函数的定义。

输入格式:

共两行,每一行输入一个不超过1000的正整数。

输出格式:

共一行,输出一个正整数。

输入样例:

6

8

输出样例:

2

时间限制:500ms内存限制:32000kb

def hcf(x, y):
   """该函数返回两个数的最大公约数"""
 
   # 获取最小值
   if x > y:
       smaller = y
   else:
       smaller = x
 
   for i in range(1,smaller + 1):
       if((x % i == 0) and (y % i == 0)):
           hcf = i
 
   return hcf
 
 
# 用户输入两个数字
num1 = int(input(""))
num2 = int(input(""))
 
print( hcf(num1, num2))

求两个数的最小公倍数。(10分)

题目内容:

输入两个正整数num1和num2(不超过500),求它们的最小公倍数并输出。

我们定义求最小公倍数的函数为lcm,给出程序主体如下:
num1=int(input(""))
num2=int(input(""))
print(lcm(num1,num2))
请补充完成hcf函数的定义。

输入格式:

共两行,每一行输入一个不超过500的正整数。

输出格式:

共一行,输出一个正整数。

输入样例:

4

6

输出样例:

12

时间限制:500ms内存限制:32000kb


def lcm(x, y):
 
   #  获取最大的数
   if x > y:
       greater = x
   else:
       greater = y
 
   while(True):
       if((greater % x == 0) and (greater % y == 0)):
           lcm = greater
           break
       greater += 1
 
   return lcm
 
 
# 获取用户输入
num1 = int(input())
num2 = int(input())
 
print( lcm(num1, num2))

求阶乘。(10分)

题目内容:

我们定义求n(n为正整数且n<=20)的阶乘的函数为fact,给出程序主体如下:

n=int(input(""))
print(fact(n))
请补充完成对fact函数的定义。

输入格式:

共一行,为一个小于20的正整数。

输出格式:

共一行,为一个正整数。

输入样例:

3

输出样例:

6

时间限制:500ms内存限制:32000kb

def fact(n):
    value = 1
    for i in range(1,n+1):
        value*=i
    return value


n=int(input(""))

print(fact(n))

冒泡排序。(10分)

题目内容:

冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

已知输入为一个列表,列表中的元素都为整数,我们定义冒泡排序函数为bubbleSort,将列表中的元素按从小到大进行排序后得到一个新的列表并输出,给出程序主体如下:

alist=list(map(int,input().split()))
print(bubbleSort(alist))
请补充完成对bubbleSort函数的定义。

输入格式:

共一行,列表中的元素值,以空格隔开。

输出格式:

共一行,为一个列表。

输入样例:

1 4 2 3

输出样例:

[1, 2, 3, 4]

时间限制:500ms内存限制:32000kb

# bubble_sort.py
def bubble_sort(alist):
    # 外层循环
    for j in range(len(alist) - 1):
        count = 0
        # 内层循环
        for i in range(0, len(alist)-1-j):
            if alist[i] > alist[i + 1]:
                alist[i], alist[i + 1] = alist[i + 1], alist[i]
                count += 1
        if 0 == count:
            break


if __name__ == '__main__':
    alist=list(map(int,input().split()))
    #print(li)
    bubble_sort(alist)
    print(alist)



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值