Python经典基础习题(函数)
Python经典基础习题(函数)
目录
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)
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
更多推荐
所有评论(0)