pythonプログラミング練習1番目のテーマ

3215 ワード

お昼に参加したプログラミングコンテストのテーマ用のvbaは今pythonでやって復習したつもりです.もっと簡単なアルゴリズムを歓迎します.私がコードを書く過程で出した間違いは注釈に書いてあります.
タイトル:
                “   ”,                 ,    (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))```