第二周Python练习

第一题:
第2章-6 求交错序列前N项和 (15 分)
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。

代码:
第二周Python练习_第1张图片
第二周Python练习_第2张图片写了两个代码的原因是第一次用jupyter notebook写的时候不知道为什么结果一直是2.868,wu一题:
第2章-6 求交错序列前N项和 (15 分)本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。代码: wXzUyODY5ODEy,size_16,color_FFFFFF,t_70#pic_center)

别人的代码:第二周Python练习_第3张图片

我学到了:
①如果运用for循环时,设置的参数在循环中不需要用到,可以直接使用占位符-来代替
②不一定要用“{0:。3f}”.format(str)来表格式化,直接“%0.3f"%str也可以,会更简便一些
③在使用if循环时,无论第一个代码中count是否能被2整除,在DEBUG中显示编译器都没有错执行else步骤,而使用punctuation的第二个代码则不会有这样的情况产生,且更简便易懂

第二题:
第2章-7 产生每位数字相同的n位数 (30 分)
读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA…A,一共B个A

我的代码:
第二周Python练习_第4张图片

别人的代码:
第二周Python练习_第5张图片
我学到了:
①原来一直以为只有在后面有空格的时候才可以用strip()函数去空格,现在发现只要有空格其实就可以用strip()。

第三题:
第2章-8 转换函数使用 (30 分)
输入一个整数和进制,转换成十进制输出

代码:
第二周Python练习_第6张图片
教训:
我和正解的差别在于首先我一开始就对a进行了int()操作,导致第二次进行进制转换使用Int()函数时发生错误,而正解避开了这个问题,使用eval()来使得只有b可以被计算出表达式的值,从而可以进行int()运算

拓展知识:用print()中的format()可以在进行格式化打印输出的同时进行进制转换,例如:
print(’{:b}’.format(20))
print(’{}’.format(20))
#我也不知道为什么会输出一个emoji
print(’{:d}’.format(20))
print(’{:x}’.format(20))

PS:不知道为什么图片一直上传失败,所以之后就没有背景图了

第四题:
第2章-9 比较大小 (10 分)
本题要求将输入的任意3个整数从小到大输出。

这是我上学期自学写的代码:
a,b,c=input().split()
a=int(a)
b=int(b)
c=int©
if a>b:
a,b=b,a
if a>c:
a,c=c,a
if b>c:
b,c=c,b
print("%d->%d->%d"%(a,b,c))

现在回看感觉感觉时间复杂度很高,效率低,便去寻找更加优化的方法,下面是修改后的方法:
print(*sorted(map(int,input().split())),sep="->")

解析:(顺序由内而外)
①:map(int,input().split()):将输入的字符串通过空格分隔符切分并且转化为单独的整数型数据
②:sorted():将括号里面的整数升序排序,不用自己再去写很多的If循环
③:sep="":用来间隔对象,不必自己写一段格式化语句,省时省力

都是常用的print()函数体内的搭配函数运算,再拓展一点记录:
objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep – 用来间隔多个对象,默认值是一个空格。
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file – 要写入的文件对象。
flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

第五题:
第2章-10 输出华氏-摄氏温度转换表 (15 分)
输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

我的代码:
fahr,upper=map(int,input().split())
if(fahr>upper):
print(“Invalid.”)
else:
print(“fahr celsius”)
while fahr<=upper:
celsius=5*(fahr-32)/9
print("{0:d}{1:>6.1f}".format(fahr,celsius))
fahr+=2

我学到了:关于format()函数的升级应用:
①如果左边参数的排序和右边的排序对应,那就不用写0、1等等序号标明
②在同一个花括号里面,可以同时使用效果不同的处理方法,比如此例中的>6.1f
③对齐方法默认空格填充

第六题:
第2章-11 求平方与倒数序列的部分和 (15 分)
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和
我的代码:
m,n=map(int,input().split())
sum=0
for i in range (m,n+1):
sum+=i**+1/i
print(“sum={:.6f}”).format(sum))
这道数学题思路很清晰,原序列很明显可以看出两个迭代方式,两个序列分别循环就有结果了

你可能感兴趣的:(python)