Python 作业 3.8-3.14
第1章-2
从键盘输入三个数到a,b,c中,按公式值输出.
难点: 输入三个数时时以空格分隔。
解决方法: a,b,c=map(int,input().split())
第2章-2
计算分段函数[1]
难点: 保留1位小数。
解决方法: 格式化输出,即:
print(“f(%.1f) = %.1f” % (x, x)
其中,%代表说明的开始,.1代表小数点后保留1位,第3个%连接了格式化说明与后面的占位符(x,x)。
第2章-5
求奇数分之一序列前N项和
range()函数的区间
源代码:
n = int(input())
c = 1
a = 1
b = 1
flag = 1
s = 0
for index in range(1, n + 1):
s = s + c
a += 1
b += 2
flag = -flag
c = flag * a / b
print("{:.3f}".format(s))
难点:以i遍历[m,n]区间。
易错点: range(begin,end) 函数是左闭右开区间,所以如果要遍历[m,n],则应写成:range(m,n+1) 。
注意:左闭右开区间的问题同样存在于for循环中。
第2章-6
求交错序列前N项和
难点:每一项符号交错排列。
易错点:
(1)初步思路是判断第i项是奇数还是偶数,然后再改变符号,但是使用if语句会增大程序的复杂度,解决方法是以sum记录当前所有项的和,每过一项改变一次flag的值:1或-1。
(2)第一次的思路是保存每一项的值到一个列表里面,但是列表的每个元素 不能直接用于数学运算并赋值给一个基本类型,所以应该使用sum记录当前所有项的和。
第2章-8
转换函数使用
难点:将任意n进制整数转化为10进制整数。
解决方法:
在数学上,
应将n进制整数x(n)的每一位数码乘每一位的权值。
在代码中,
提取“每一位”的方法是x(n)%10,具体可以采用 //,即向下取整。
a,b=input().split(",")
a=int(a)
b=int(b)
s=0
i=0
while a>0:
s=s+(a%10)*(b**i)
i=i+1
a=a//10
print(s)
第2章-11
求平方与倒数序列的部分和
难点: 非零返回的处理。
解决方法:
(1)在输入上,将 m,n=map(int,input()) 改为:
m,n=input().split()
m,n=eval(m),eval(n)
另外应注意,在Python2环境中,输入使用***raw_input()***,而在Python3环境中,输入使用 input() ;
(2)在格式化输出上,将***print(“sum=%.6f” % su)***改为
print(“sum = {:.6f}”.format(su)) 。
第2章-14
求整数段和
源代码:
a, b = input().split()
a, b = eval(a), eval(b)
i = a
n = 0
s = 0
for i in range(a, b + 1):
print("{:>5d}".format(i),end="")
n = n + 1
s = s + i
if n == 5:
print("\n", end="")
n = 0
elif i == b:
print("\n", end="")
print("Sum =",s)
难点:
(1)左对齐与间隔字符。
(2)分行输出
解决方法:
(1)print("{:>5d}".format(i),end="") ,注意格式化输出语句中**{:>5d}**规定了间隔字符数。
(2)一方面,由于print()自动换行,使得每一行仅能输出一个数,所以应使用 print(,end = “”) 的形式,来在每一行输出连续输出数据,另一方面,使用变量n记录每一行已经输出了多少个数字,如果到5个,则换行。