繼續在PTA上練習Python
(從 第2章-5 求奇數分之一序列前N項和 開始)
1.
x=int(input()) a=i=1 s=0 while(i<=x): s=s+1/a a=a+2 i=i+1 print('sum = %.6f' %(s))
2.
求交錯級數也考慮了很久,這里要引入flag來計算。有時候表達式寫的太繁瑣,程序就進入了死循環。
n=int(input()) s=a=0 b=-1 flag=1 for i in range(1,n+1): a=a+1 b=b+2 s=s+a/b*flag flag=-flag print('%.3f' %(s))
3.
這道題做過類似的,不過不算逗號輸入可以簡單點寫
x=int(input()) n=int(input()) i=0 s=0 while(i<n): s=s+x*10**i i=i+1 print(s)
但是這里要寫逗號,還要在同一行輸入:
之前的 .split( )意識是用空格來分隔輸入,這里換成逗號
x,n=map(int,input().split(",")) i=0 s=0 while(i<n): s=s+x*10**i i=i+1 print(s)
4.
轉換函數這道題本來是有題目缺陷的
用了下強制類型轉換,答案是照輸入的數來寫的,一旦超過兩位數就不能用了
a,b=map(int,input().split(",")) c=int(a/10) d=c*b e=a-10*c f=e+d print(f)
5.
比較大小,一個和冒泡排序有關的題目。自己寫了很多很多if,最后還是參考了網上唯一的資料(鏈接)
N = input().split() a = [] for i in N: a.append(int(i)) a = sorted(a) for i in range(3): if i == 2: print(a[i]) else: print(a[i], end='->')
sorted排序函數的用法(鏈接)
range函數的用法(鏈接)
6.
題目沒怎么看懂
a,b=map(int,input().split()) if b<a: print("Invalid.") else: print("fahr celsius") while a<=b: d = 5*(a-32)/9 if (d<=-10.0)or(d>=10.0): print("%d %.1f" %(a,d)) elif d<-0.0: print("%d %.1f" %(a,d)) a+=2
網上參考的代碼,但是死活不輸出結果,可能是我pycharm編譯器的問題