Python程序设计与算法基础

您所在的位置:网站首页 三星s7的型号 Python程序设计与算法基础

Python程序设计与算法基础

2023-08-08 15:43| 来源: 网络整理| 查看: 265

@书本为Python程序设计与算法基础教程(第二版)-----江红、余青松   编著

 

第二章、python语言基础

1.编写程序,输入球的半径,计算球的表面积和体积(结果保留两位小数)

#计算圆的表面积和体积: import math r = float(input("请输入球的半径:")) area = 4 * math.pi * r**2 volume = 4/3*math.pi*r**3 print(str.format("球的表面积为:{0:2.2f},体积为:{1:2.2f}",area,volume)) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 请输入球的半径:666 球的表面积为:5573889.08,体积为:1237403376.70

2.编写程序,声明函数getValue(b,r,n),根据本金b,年利率r和年数n计算最终收益v

money = int(input("请输入本金:")) rate = float(input("请输入年利率(=0):")) x = a / 2 y = (x + a/x) / 2 while(abs(y-x) >= pow(10,-6)): x = y y = (x + a/x) / 2 print(y) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 请输入任意实数a(>=0):2 1.414213562373095

10.即有一个数,用3除余2,用5除余3,用7除余2,请问0~1000中这样的数有哪些?

我国古代有位大将,名叫韩信。他每次集合部队,只要求部下先后按1-3,1-5,1-7报数,然后再报告一下各队每次报数的余数,他就知道到了多少人。他的这种巧妙算法被人们称作“鬼谷算”,也叫“隔墙算”,或称为“韩信点兵”,外国人还称它为“中国余数定理”。

for i in range(0,1001): if((i % 3 == 2 )and (i % 5 == 3) and (i % 7 == 2)): print(i, end=" ") #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 23 128 233 338 443 548 653 758 863 968

11.一球从100米的高度自由下落,每次落地后反弹回原高度的一半,再落下。求小球在第10次落地时共经过多少米?第10次反弹多高

规律: 第一次下落时的高度:100 第二次下落时的高度(第一次反弹的高度):50 第三次下落时的高度(第二次反弹的高度):25 …

n = 10 h_down = 100 h_up = 0 sum = 0 for i in range(1,n+1): sum += h_down+h_up h_down = h_up = h_down/2 print("小球在第十次落地时共经过:{0}米,第十次反弹高度:{1}米".format(sum,h_up)) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 小球在第十次落地时共经过:299.609375米,第十次反弹高度:0.09765625米

12.猴子第一天摘下若干个桃子,当天吃掉一半多一个;第二天接着吃了剩下的桃子的一半多一个;以后每天都吃了前一天剩下的桃子的一半多一个。到第八天发现只剩一个桃子了。请问猴子第一天共摘了多少个桃子?

这是一个递推问题。某天所剩桃子数x。后一天所剩桃子数y = x - (x/2+1) = x/2-1。则x = 2(y+1)

result = 1 for i in range(8,0,-1): print("第{0}天桃子数:{1}".format(i,result)) result = 2*(result+1)

13.计算Sn = 1+11+111+…+111…111(最后一项是n个1)。n是一个随机产生的1~10(包括1和10)中的正整数

import random n = random.randint(1,10) x = 1 s = 0 for i in range(1,n+1): s += x x = 10*x+1 print("n = {0},sn = {1}".format(n,s)) 第五章、序列数据类型

1.统计所输入字符串中单词的个数,单词之间用空格分隔

s = input("请输入字符串:") num = 0 for i in s: if((i >= 'a' and i = 'A' and i >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 请输入一个字符串:zgh666 [122, 103, 104, 54, 54, 54] 第八章、函数和函数试编程

1.定义计算并返回第n阶调和数(1+1/2+1/3+…+1/n)的函数,输出前n个调和数

def harmonic(n): total = 0.0 for i in range(1, n+1): total += 1.0/i return total n = int(input("n:")) print("输出前n个调和数的值:") for i in range(1, n+1): print(harmonic(i))

2.编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。请分别使用递归和非递归方式实现

#1.递归 ef fact(n): if n == 0 : return 1 return n*fact(n-1) n = int(input("请输入整数n(n>=0):")) print(str(n)+" ! = " + str(fact(n))) #2.非递归: def fact(n): t = 1 for i in range(1,n+1): t *= i return t n = int(input("请输入整数n(n>=0):")) print(str(n)+" ! = " + str(fact(n)))

3.编写程序,定义一个求Fibonacci数列的函数fib(n),并编写测试代码,输出前20项(每项宽度5个字符位置,右对齐),每行输出10个。请分别使用递归和非递归方式实现

#1.递归: def fib(n): if (n == 1 or n == 2): return 1 return fib(n-1)+fib(n-2) for i in range(1,21): print(str(fib(i)).rjust(5,' '),end = ' ') if i %10 == 0: print() #2.非递归: def fib(n): if (n == 1 or n == 2): return 1 n1 = n2 = 1 for i in range(3,n+1): n3 = n1+n2 n1 = n2 n2 = n3 return n3 for i in range(1,21): print(str(fib(i)).rjust(5,' '),end = ' ') if i %10 == 0: print() #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

4.编写程序,利用可变参数定义一个求任意个数数值的最小值的函数min_n(a,b,*c),并编写测试代码。例如对于“print(min_n(8, 2))”以及“print(min_n(16, 1, 7, 4, 15))”的测试代码

def min_n(a,b,*c): min_number = a if(a < b) else b for n in c: if n < min_number: min_number = n return min_number print(min_n(8, 2)) print(min_n(16, 1, 7, 4, 15)) #>>>>>>>>>>>>>>>>>>>>>>>> 2 1

5.编写程序,利用元组作为函数的返回值,求序列类型中的最大值、最小值和元素个数,并编写测试代码,假设测试代码数据分别为s1=[9, 7, 8, 3, 2, 1, 55, 6]、s2=[“apple”, “pear”, “melon”, “kiwi”]和s3="TheQuickBrownFox"  

def func(n): return (max(n),min(n),len(n)) s1=[9, 7, 8, 3, 2, 1, 55, 6] s2=["apple", "pear", "melon", "kiwi"] s3="TheQuickBrownFox" for i in (s1,s2,s3): print("list = ", i) t = func(i) print("最大值 = {0},最小值 = {1},元素个数 = {2}".format(t[0], t[1], t[2])) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> list = [9, 7, 8, 3, 2, 1, 55, 6] 最大值 = 55,最小值 = 1,元素个数 = 8 list = ['apple', 'pear', 'melon', 'kiwi'] 最大值 = pear,最小值 = apple,元素个数 = 4 list = TheQuickBrownFox 最大值 = x,最小值 = B,元素个数 = 16 第九章、

1.编写程序,创建类MyMath,计算圆的周长和面积以及球的表面积和体积,并编写测试代码,结果均保留两位小数

import math class MyMath: def __init__(self, r): self.r = r def perimeter_round(self): return 2 * math.pi * self.r def area_round(self): return math.pi * self.r * self.r def area_ball(self): return 4 * math.pi * self.r ** 2 def volume_ball(self): return 4 / 3 * math.pi *self.r ** 3 if __name__ == '__main__': n = float(input("请输入半径:")) m = MyMath(n) print("圆的周长 = {0:.2f}\n圆的面积 = {1:.2f}\n球的表面积 = {2:.2f}\n球的体积 = {3:.2f}".\ format(m.perimeter_round(), m.area_round(), m.area_ball(), m.volume_ball())) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 请输入半径:5 圆的周长 = 31.42 圆的面积 = 78.54 球的表面积 = 62.83 球的体积 = 523.60

2.编写程序,创建类Temperature,其包含成员变量degree(表示温度)以及实例方法ToFahrenheit(将摄氏温度转换为华氏温度)和ToCelsius(将华氏温度转换为摄氏温度),并编写测试代码

class Temperature: def __init__(self, degree): self.degree = degree def toFahrenheit(self): return self.degree*9/5 + 32 def toCelsius(self): return (self.degree -32) * 5/9 if __name__ == '__main__': n1 = float(input("请输入摄氏温度:")) t1 = Temperature(n1) print("摄氏温度 = {0:.2f}, 华氏温度 = {1:.2f}".format(n1, t1.toFahrenheit())) n2 = float(input("请输入华氏温度:")) t2 = Temperature(n2) print("摄氏温度 = {0:.2f}, 华氏温度 = {1:.2f}".format(t2.toCelsius(), n2)) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 请输入摄氏温度:30 摄氏温度 = 30.00, 华氏温度 = 86.00 请输入华氏温度:70 摄氏温度 = 21.11, 华氏温度 = 70.00 第十章、

1.编写程序,创建一个实现+、-、*、/和**(幂)运算的模块MyMath.py,并编写测试代码

#先创建一个模块代码MyMath.py def add(x,y): return x+y def sub(x,y): return x-y def mul(x,y): return x*y def div(x,y): if y == 0: return "除数不能为零!" return x/y def power(x,y): return x**y

测试代码:

>>> import MyMath >>> dir(MyMath) ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'div', 'mul', 'power', 'sub'] >>> MyMath.add(10,12) 22 >>> MyMath.div(5,4) 1.25 >>> MyMath.mul(9,9) 81 >>> MyMath.sub(6,1) 5 >>> MyMath.power(2,10) 1024

2.编写程序,创建一个求圆的面积和球体体积的模块AreaVolume.py,并编写只有独立运行时才执行的测试代码,要求输入半径,输出结果保留两位小数

#先创建一个模块代码AreaVolume.py: import math def area(r): return math.pi * r * r def volume(r): return 4/3 * math.pi * r**3 #测试代码: import AreaVolume if __name__ == '__main__': r = float(input("请输入半径:")) print("圆的面积:{0:.2f},球的体积:{1:.2f}".\ format(AreaVolume.area(r), AreaVolume.volume(r))) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 请输入半径:5.1 圆的面积:81.71,球的体积:555.65

3.编写程序,创建输出命令行参数个数以及各参数内容的模块SysArgvs.py,并编写测试代码

#先创建一个模块代码SysArgvs.py import sys print("参数个数:", len(sys.argv)) for i,x in enumerate(sys.argv): print("argv[{0}] = {1}".format(i, x))

测试(cmd):

D:\zgh\desktop>python SysArgvs.py 参数个数: 1 argv[0] = SysArgvs.py D:\zgh\desktop>python SysArgvs.py a b c 参数个数: 4 argv[0] = SysArgvs.py argv[1] = a argv[2] = b argv[3] = c

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3