2017-11-20 26 views
0

私には分かりません。私はPythonの初心者で、3週間しかコーディングしていません。どんな助けもありがとうございます。リストのN番目の要素にMを掛けることでMを

問題:

私たちは、3つの入力に渡している。

  • 番号のリストが
  • 乗数値、M
  • 値、N

N番目の要素すべてにMを掛けてください(0番目の要素にMを掛けてはいけません)。 Nが3の場合、インデックス2の3番目の要素から開始します。

N個未満の要素がある場合は、変更されていない入力リストを出力する必要があります。

私はこれを理解できないようです。私はここでさまざまなことを試しました。現在、以下のことがありますが、これはまったく動作しません。提供

import sys 
M= int(sys.argv[2]) 
N= int(sys.argv[3]) 

numbers= sys.argv[1].split(',') 
for i in range(0, len(numbers)): 
    numbers[i]= int(numbers[i]) 

マイコード:

for N in numbers: 
    if numbers[i] > 0: 
    total = N * M 
    print(total) 
else: 
    print(numbers) 

出力:私は出力がどうあるべきかにさえ近くないよ

。これで失われた気分。ここに私のコードが来るものがあります。彼らはリスト内の出力を望むように見えます。

Program Failed for Input: 1,2,3,4,5,6 5 3 
Expected Output: [1, 2, 15, 4, 5, 30] 
Your Program Output: 
5 
10 
15 
20 
25 
30 
+0

は私の質問で私を支援いただきありがとうございます、Martineau。私はこのサイトの初心者ですし、一般的にコーディングするので、助けていただければ幸いです。私はこのサイトを本当に楽しんでおり、コミュニティは非常に友好的で、歓迎的で、役に立つと思われます。 – Logan

答えて

0

これはあなたのために機能しますか?

res = [] 
for num in numbers: 
    if num > 0: 
     total = num * M 
     res.append(total) 

if len(res) != len(numbers): 
    print (numbers) 
else: 
    res.reverse() 
    print (res) 
2

リストの内包表記を使用して、よりエレガントなソリューション;)

[item*M if (index and not (index+1)%N) else item for index, item in enumerate(items)] 

enter image description here

+0

SSは実行例を表示するためのもので、テキストの答えは上です。 – Abend

+0

あなたが気づいていないという事実は、それがそこになかったということを意味するものではありません。編集履歴をチェックすると、SSはテキスト応答の後にアップロードされました。 – Abend

+0

完了:答えの時間ありがとうと申し訳ありませんが、私は少し怒った場合。 – Abend

0

このソリューションは、あなたのオリジナルのものに基づいています。もっとニシキヘビ1は、例えば、リストの内包表記を使用するので、Nはリストのサイズよりも大きくない場合、プログラムは各N番目の数と数字の新しいリストを作成

、将来的に心の中でそれを保ちますこれは単純なモジュロ演算子で行われます。 Pythonでのインデックス作成はゼロから開始し、インデックス値を反復処理しますが、目的の出力は1から始まるように要素を数えます。したがって、モジュロではi+1です。すべてのN番目のプログラムでない場合は、古い値を追加するだけです。リストがNよりも短い場合は、変更されていないリスト全体がoutputリストに割り当てられます。

3

スライシングでリストの理解を試すことができます。

numbers[N-1::N] = [x * M for x in numbers[N-1::N]] 
0

は非常に多くの試みとプログラマーとして働く友人のオフこれをバウンドした後、私は私に適切な出力を与えたこれで終わった:

newlist = [] 

if len(numbers) < N: 
    newlist = numbers 
else: 
    for i in range(0, len(numbers)): 
    num = numbers[i] 
    if (i+1) % N == 0: 
     newlist.append(num*M) 
    else: 
     newlist.append(num) 
     i+=1 

print(newlist) 
関連する問題