3.5 上机实践
1. 完成本章中的例3.1~例3.23,熟悉Python语言的3种基本控制结构,即顺序结构、选择结构、循环结构。
2. 编写程序,计算1+2+3+…+100之和。
3. 编写程序,计算10+9+8+…+1之和。
4. 编写程序,计算1+3+5+7…+99之和。
5. 编写程序,计算2+4+6+8…+100之和。
6. 编写程序,使用不同的实现方法输出2000~3000的所有闰年,运行效果如图3-10所示。
图3-10 2000~3000的所有闰年
7. 编写程序,计算Sn=1-3+5-7+9-11+…。
提示:
可以使用if i%2==0的语句形式判断i是否为偶数。
8. 编写程序,计算Sn=1+1/2+1/3+…。
9. 编写程序,打印九九乘法表。要求输出九九乘法表的各种显示效果(上三角、下三角、矩形块等方式)。
10. 编写程序,输入三角形的3条边,先判断是否可以构成三角形,如果可以,则进一步求三角形的周长和面积,否则报错“无法构成三角形!”。其运行效果如图3-11所示(结果均保留一位小数)。
提示:
(1)3个数可以构成三角形必须满足如下条件:每条边的边长均大于0,并且任意两边之和大于第三边。
(2)已知三角形的3条边,,其中h为三角形周长的一半。
11. 编写程序,输入x,根据如下公式计算分段函数y的值。请分别利用单分支语句、双分支结构以及条件运算语句等方法实现。其运行效果如图3-12所示。
图3-11 三角形周长和面积的运行效果
图3-12 分段函数的运行效果
12. 编写程序,输入一元二次方程的3个系数a、b和c,求ax2+bx+c=0方程的解。其运行效果如图3-13所示。
提示:
(1)方程ax2+bx+c=0的解有以下几种情况。
①a=0 and b=0,无解。
图3-13 求解一元二次方程
②a=0 and b!=0,有一个实根:。
③b2-4ac=0,有两个相等实根:。
④b2-4ac>0,有两个不等实根:,。
⑤b2-4ac<0,有两个共轭复根:,。
(2)可以利用“print(str.format("此方程有两个不等虚根:{0}+{1}i和{0}-{1}i ",realPart,imagPart))”的语句形式输出方程的两个共轭复根。
13. 编写程序,输入整数n(n≥0),分别利用for循环和while循环求n!。其运行效果如图3-14所示。
提示:
(1)n!=n×(n-1)×(n-2)×…×2×1。例如5!=5×4×3×2×1=120,特别地,0!=1。
(2)一般情况下,累乘的初值为1,累加的初值为0。
(3)如果输入的是负整数,则继续提示输入非负整数,直到n≥0。
14. 编写程序,产生两个0~100(包含0和100)的随机整数a和b,求这两个整数的最大公约数和最小公倍数。其运行效果如图3-15所示。
图3-14 阶乘的运行效果
图3-15 最大公约数和最小公倍数的运行效果
提示:
(1)可以利用“random.randint(0,100)”的语句形式生成0~100(包含0和100)的随机整数。
(2)利用“辗转相除法”求最大公约数,具体算法如下。
①对于已知的两个正整数m、n,使得m>n。
②m除以n得余数r。
③若r≠0,则令m←n,n←r,继续相除得到新的余数r。若仍然r≠0,则重复此过程,直到r=0为止。最后的m就是最大公约数。
(3)求得了最大公约数,最小公倍数就是已知的两个正整数之积除以最大公约数的商。