目录

1.编写函数,实现根据键盘输入的长、宽、高之值计算长方体体积。

2.编写函数,使用递归函数f(n)实现斐波那契数列中小于等于参数n的所有值。

3.编写函数,从键盘输入一个整数,判断其是否为完全数。所谓完全数,是指这样的数,该数的各因子(除该数本身外)之和正好等于该数本身,例如:6=1+2+3,28=1+2+4+7+14。

4.编写函数,从键盘输入参数n,使用递归函数H(n)实现下列特征方程中小于等于参数n的所有值。 H(0)=0; H(1)=1; H(2)=2; H(n)= H(n)+9H(n-2)-9H(n-3)

5.编写函数,实现折半查找。

6.编写函数,从键盘输入参数x和n,计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值。

7.编写函数,从键盘输入参数n,计算并显示表达式1 +1/2 –1/3 + 1/4 –1/5 + 1/6+… +(-1)n/n 的前n项之和。

8.编写函数,从键盘输入一字符串,判断该字符串是否为会回文,所谓回文是指,从前向后读和从后向前读是一样的。

运行结果:

9.编写函数,从键盘输入一字符串,把其中的各个字符颠倒,标点符号不颠倒,例如,‘I enjoy reading!’,经过函数调用后变为‘gnidaer yojne I’。

10.佩奇去超市购买54元巧克力和53元果冻,货币面值有20、10、2、1元,按付款货币数量最少原则,佩奇需要付给超市多少数量的货币,编写函数实现该算法。


1.编写函数,实现根据键盘输入的长、宽、高之值计算长方体体积。

程序代码:

x = int(input("请输入长方体的长:"))
y = int(input("请输入长方体的宽:"))
z = int(input("请输入长方体的高:"))
def rectangle_volume(rectangle_length,rectangle_width,rectangle_height):
    rectangle_volume_true = rectangle_height*rectangle_width*rectangle_length
    print("矩形的体积为:",rectangle_volume_true)
    return 0
rectangle_volume(x,y,z)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/01.py
请输入长方体的长:8
请输入长方体的宽:4
请输入长方体的高:2
矩形的体积为: 64

进程已结束,退出代码0

2.编写函数,使用递归函数f(n)实现斐波那契数列中小于等于参数n的所有值。

程序代码:

def fib(n):
    a,b = 1,1
    while a <= n:
        print(a,end=" ")
        a,b = b,a+b
fib(1000)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/02.py
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 
进程已结束,退出代码0

3.编写函数,从键盘输入一个整数,判断其是否为完全数。所谓完全数,是指这样的数,该数的各因子(除该数本身外)之和正好等于该数本身,例如:6=1+2+3,28=1+2+4+7+14。

程序代码:

number = int(input("请输入一个数字:"))
a = []
def complete_number(number):
    for i in range(1,number):
        if number % i == 0:
            a.append(i)
    if sum(a) == number:
        print("{}是完美数".format(number))
    else:
        print("{}不是完美数".format(number))

complete_number(number)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/03.py
请输入一个数字:6
6是完美数

进程已结束,退出代码0

4.编写函数,从键盘输入参数n,使用递归函数H(n)实现下列特征方程中小于等于参数n的所有值。 H(0)=0; H(1)=1; H(2)=2; H(n)= H(n)+9H(n-2)-9H(n-3)

程序代码:

number= int(input("请输入参数n:"))
def H(n):
    if 0 <= n < 3:
        return n
    else:
        return H(n-1)+9*H(n-2)-9*H(n-3)
print("函数H(n)小于等于参数n的所有值为:")
for i in range(number+1):
    print(H(i),end=" ")

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/04.py
请输入参数n:5
函数H(n)小于等于参数n的所有值为:
0 1 2 11 20 101 
进程已结束,退出代码0

5.编写函数,实现折半查找。

程序代码:

from random import  randint
def binarySearch(lst,value):
    start = 0
    end = len(lst)
    while start <= end:
        middle = (start+end)//2
        if value == lst[middle]:
            return middle
        elif value > lst[middle]:
            start = middle + 1
        elif value < lst[middle]:
            end = middle - 1
    return False
lst = [randint(1,50) for i in range(1,20)]
lst.sort()
print(lst)
result = binarySearch(lst,10)
if result != False:
    print("查找成功!位置在:",result+1)
else:
    print("查找失败!")

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/05.py
[2, 6, 8, 10, 11, 12, 13, 19, 24, 32, 37, 37, 37, 39, 41, 44, 45, 45, 48]
查找成功!位置在: 4

进程已结束,退出代码0

6.编写函数,从键盘输入参数x和n,计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值。

程序代码:

x = int(input("请输入最开始的一个数:"))
n = int(input("请输入你想求和的项数:"))
a = 0
b = 0
def jie_fib_sum(x,n):
    global a,b
    while n:
        a += x
        n -= 1
        x *= 10
        b += a
    return b
result = jie_fib_sum(x,n)
print("前n项和为:",result)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/06.py
请输入最开始的一个数:1
请输入你想求和的项数:5
前n项和为: 12345

进程已结束,退出代码0

7.编写函数,从键盘输入参数n,计算并显示表达式1 +1/2 –1/3 + 1/4 –1/5 + 1/6+… +(-1)n/n 的前n项之和。

程序代码:

n = int(input("请输入你想进行计算的数字:"))
count = 1
def add(n):
    global count
    for i in range(2,n+1):
        if i%2 == 0:
            count += (1/i)
        else:
            count -= (1/i)
    print("前{}项和为:".format(n),count)

add(n)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/07.py
请输入你想进行计算的数字:2
前2项和为: 1.5

进程已结束,退出代码0

8.编写函数,从键盘输入一字符串,判断该字符串是否为会回文,所谓回文是指,从前向后读和从后向前读是一样的。

程序代码:

string = input("请输入一字符串:")
string_list = []
for i in string:
    string_list.append(i)
def return_word(lis):
    start = 0
    end = len(lis)
    if lis[start] == lis[end-1]:
            start += 1
            end -=1
            if lis[start] == lis[end-1]:
                print("{}是回文".format(string))
    else:
        print("{}不是回文".format(string))

return_word(string_list)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/08.py
请输入一字符串:杜小杜
杜小杜是回文

进程已结束,退出代码0

9.编写函数,从键盘输入一字符串,把其中的各个字符颠倒,标点符号不颠倒,例如,‘I enjoy reading!’,经过函数调用后变为‘gnidaer yojne I’。

程序代码:

由于太懒了就做了一个“!”的字符颠倒。代码中有两个感叹号,是因为中英文输入的感叹号不同,要是只写中文感叹号或是英文感叹号可能会出现报错情况。

string = input("请输入一字符串:")
string_list = []
keep = []
lis_new = []
last = []
for i in string:
    string_list.append(i)
def replace(lis):
    count = 0
    end = len(lis)
    if end == 1:
        lis_ol = "".join(lis)
        print(lis_ol)
    else:
        for index,nums in enumerate(lis):
            if nums == "!" or nums == "!":
                keep.append(index)
            else:
                continue
        for i in range(end):
            keep_new = [i for i in keep]
            lis_new.append(i)
            lis_new_last = list(set(lis_new) - set(keep_new))
            if len(keep) == 0:
                lis[i], lis[end - i - 1] = lis[end - i - 1], lis[i]
                count += 1
            if count == (end // 2)+1:
                    break
            if len(keep) != 0:
                lis_new_last.reverse()
                for l in (lis_new_last):
                    if l == end - i - 2:
                        lis[i],lis[l] = lis[l],lis[i]
        lis_ol ="".join(lis)
        print(lis_ol)

replace(string_list)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/09.py
请输入一字符串:我愛杜杜!
杜杜愛我!

进程已结束,退出代码0

10.佩奇去超市购买54元巧克力和53元果冻,货币面值有20、10、2、1元,按付款货币数量最少原则,佩奇需要付给超市多少数量的货币,编写函数实现该算法。

程序代码:

def min_number(n):
    if n <= 0:
        print("错误!请检查您的付款金额")
    else:
        x = n // 20
        x += 1
        print("需要最少货币:",x, "张")

min_number(107)

运行结果:

C:\ProgramData\Anaconda3\python.exe D:/blue4/10.py
需要最少货币: 6 张

进程已结束,退出代码0
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐