-5

JESを使用しています。以下の関数は、私が実行したいことに対して機能しますが、答えにxとyが含まれていません。たとえば、最初に入力した数字が2で、2番目の数字が8の場合、4と6のみが印刷されます。2、4、6、8を印刷したいのですが。助けてください。ありがとう!

def main():
  x=input("Enter the first number:")
  y=input("Enter the second number:")
  i=0
  for i in range (x,y):
    if i%2==0:
      print i
4

2 に答える 2

2

簡単に言えば、問題は、Python (および拡張により JES) でからまで(包括的) にrange(x, y)ステップすることです。これにより、リスト演算子のスライス構文を自然に模倣できます。つまり、 と同じリストです。(なぜslicing とdo の両方がこれを行うのかについては、 Why does range(start, end) not include end?を参照してください)。xy-1[][l[a] for a in range(x, y)]l[x:y]range

したがって、包括的にxしたい場合は、最後のパラメータを 1 つ上げるだけで済みます。y

for i in range(x, y+1):

必要な数値が出力されます。

PSi=0ループの前は不要です。ループはfor、変数を初期化 (および必要に応じて作成) しますi

于 2012-09-08T01:38:18.137 に答える
1
print ",".join([str(i) for i in range(int(raw_input("Enter #1:")),\
                                      int(raw_input("Enter #2:"))+1) if not i%2])

私はそれらの括弧を正しく持っていると思います

あるいは、Usinginputは短いですが、巨大なセキュリティ ホールであり、通常は避けるべきです

print ",".join([str(i) for i in range(input("Enter #1:"),\
                                      input("Enter #2:")+1) if not i%2])

そして最短 (thanks nneonneo)

print str([x for x in range(input('1'), input('2')+1) if not x%2])[1:-1] 
于 2012-09-08T01:28:37.267 に答える