pythonプログラミング練習1番目のテーマ
3215 ワード
お昼に参加したプログラミングコンテストのテーマ用のvbaは今pythonでやって復習したつもりです.もっと簡単なアルゴリズムを歓迎します.私がコードを書く過程で出した間違いは注釈に書いてあります.
タイトル:
n=int(input('データ個数'))a=[]for i in range(n):a.append(int(input('は%d番目のデータ'%(i+1))
a/nのデータ型に注意して、必ず変換して、さもなくば間違います
a直接list(input('))はできません.そうしないと、引用符とカンマ付きlistが出てきます.
スライスしてもいいと思いますが、面倒なので、簡単な方法があるかどうか知りたいです.
a.sort() sum1 = 0 sum2 = 0 sum3 = 0
上のsum 1,sum 2,sum 3はすべて定義しなければならなくて、初めて現れる式の右側が存在するためです
if n%2==0:#剰余数を取る2つの方法1.x%y 2. divmod(x,y)x=n/2 for i in range(int(x):#注意xはintで、rangeのパラメータはintタイプしかありません.そうしないと、sum 1=sum 1+a[i]for i in range(n):sum 2=sum 2+a[i]diff=sum 2-sum 1*2 print('outgoing:%d introverted:%d diff=%d'%(x,x,diff))
同じアルファベット変数は使用できません.ループは付与プロセスに相当します.それぞれ同じです.
if n % 2 != 0: x = int(n/2) for i in range(x): sum1 = sum1 + a[i] for i in range(n): sum2 = sum2 + a[i] for i in range(x+1): sum3 = sum3 + a[i] diff1 = sum2 - sum1 * 2 print('outgoing: %d introverted: %d diff = %d'%(x+1,x,diff1))
n=int(input('データ個数'))a=[]for i in range(n):a.append(int(input('は%d番目のデータ'%(i+1))
a.sort() sum1 = 0 sum2 = 0 sum3 = 0
x = int(n/2) for i in range(x): sum1 = sum1 + a[i] for i in range(n): sum2 = sum2 + a[i] diff = sum2 - sum1 * 2 if n % 2 == 0: print('outgoing: %d introverted: %d diff = %d'%(x,x,diff)) if n % 2 != 0: print('outgoing: %d introverted: %d diff = %d'%(x+1,x,diff))```
再度pythonの入力を検討したところ、文字列タイプしか入力できない生成リストはlistで直接カンマを持ち込むことができ、splitメソッドを使うことができると思ったが、生成されたのは文字列タイプで、突然、it occurred to me that!!リスト生成式でね!次のコードがあります.
a=[int(x)for x in input('カンマで区切られたシーケンスを入力してください').split(',')]``テスト:
そして最も簡単な最終版が生まれた
タイトル:
“ ”, , (outgoing, ) (introverted, )。 , 。
:
N(2 <= N <= 105)。 N , , 。 231。
:
:
Outgoing #: N1
Introverted #: N2
Diff = N3
N1 ;N2 ;N3 。
1:
10
23 8 10 99 46 2333 46 1 666 555
1:
Outgoing #: 5
Introverted #: 5
Diff = 3611
2:
13
110 79 218 69 3721 100 29 135 2 6 13 5188 85
2:
Outgoing #: 7
Introverted #: 6
Diff = 9359```
:
n=int(input('データ個数'))a=[]for i in range(n):a.append(int(input('は%d番目のデータ'%(i+1))
a/nのデータ型に注意して、必ず変換して、さもなくば間違います
a直接list(input('))はできません.そうしないと、引用符とカンマ付きlistが出てきます.
スライスしてもいいと思いますが、面倒なので、簡単な方法があるかどうか知りたいです.
a.sort() sum1 = 0 sum2 = 0 sum3 = 0
上のsum 1,sum 2,sum 3はすべて定義しなければならなくて、初めて現れる式の右側が存在するためです
if n%2==0:#剰余数を取る2つの方法1.x%y 2. divmod(x,y)x=n/2 for i in range(int(x):#注意xはintで、rangeのパラメータはintタイプしかありません.そうしないと、sum 1=sum 1+a[i]for i in range(n):sum 2=sum 2+a[i]diff=sum 2-sum 1*2 print('outgoing:%d introverted:%d diff=%d'%(x,x,diff))
同じアルファベット変数は使用できません.ループは付与プロセスに相当します.それぞれ同じです.
if n % 2 != 0: x = int(n/2) for i in range(x): sum1 = sum1 + a[i] for i in range(n): sum2 = sum2 + a[i] for i in range(x+1): sum3 = sum3 + a[i] diff1 = sum2 - sum1 * 2 print('outgoing: %d introverted: %d diff = %d'%(x+1,x,diff1))
.. outgoing diff
n=int(input('データ個数'))a=[]for i in range(n):a.append(int(input('は%d番目のデータ'%(i+1))
a.sort() sum1 = 0 sum2 = 0 sum3 = 0
x = int(n/2) for i in range(x): sum1 = sum1 + a[i] for i in range(n): sum2 = sum2 + a[i] diff = sum2 - sum1 * 2 if n % 2 == 0: print('outgoing: %d introverted: %d diff = %d'%(x,x,diff)) if n % 2 != 0: print('outgoing: %d introverted: %d diff = %d'%(x+1,x,diff))```
再度pythonの入力を検討したところ、文字列タイプしか入力できない生成リストはlistで直接カンマを持ち込むことができ、splitメソッドを使うことができると思ったが、生成されたのは文字列タイプで、突然、it occurred to me that!!リスト生成式でね!次のコードがあります.
>>> a = '1,2,3'
>>> b = a.split(',')
>>> b
['1', '2', '3']
>>> c = [int(x) for x in b]
>>> c
[1, 2, 3]```
a=[int(x)for x in input('カンマで区切られたシーケンスを入力してください').split(',')]``テスト:
>>> a = [int(x) for x in input(' ').split(',')]
1,2,3,4,5,6
>>> a
[1, 2, 3, 4, 5, 6]
>>>
そして最も簡単な最終版が生まれた
n = int(input(' '))
a = [int(x) for x in input(' ').split(' ')]
a.sort()
sum1 = 0
sum2 = 0
sum3 = 0
x = int(n/2)
for i in range(x):
sum1 = sum1 + a[i]
for i in range(n):
sum2 = sum2 + a[i]
diff = sum2 - sum1 * 2
if n % 2 == 0:
print('outgoing: %d
introverted: %d
diff = %d'%(x,x,diff))
if n % 2 != 0:
print('outgoing: %d
introverted: %d
diff = %d'%(x+1,x,diff))```