• 締切済み

python

pythonについての質問です。 def S_sa(k=1) for step in xrange(k) : if step == 0 : print 'a' else print 'b' というコードがあって、なぜかprint aが実行されるのはなぜでしょうか? xrangeのreturnは1ではないのでしょうか?

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> xrangeのreturnは1ではないのでしょうか? なぜ、そう思うのですか? どこかにそう書いてありましたか? http://docs.python.jp/2/library/functions.html#xrange > この関数は range() に非常によく似ていますが、リストの代わりに “xrange オブジェクト” を返します。 > このオブジェクトは不透明なシーケンス型で、対応するリストと同じ値を持ちます とあるのですから、まず、「1」という整数オブジェクトだ、ということがありえません。 説明通りにrangeのマニュアルを読めば http://docs.python.jp/2/library/functions.html#range range(k) は range(0,k,1) であり、 0 から 0+n*1<0+k*1 まで1ずつ増える整数のリスト(xrangeはそのリストと同等)だとわかります。

関連するQ&A

  • Pythonについて

    Pythonで〇〇から〇〇の時に実行、 ということはできますか? if文を使うと if a <= 100: このように100以下のみ実行となりますが、 if a <= 100: if a >= 90: print("〇") else: print("×") else: print("×") aが90以上100以下の時、「◯」、それ以外の時「×」を出力するには上のような構文にすればいいですか? この構文より簡単な構文、もしくはより良い構文がある場合は教えてください。

  • pythonコードについて

    以下のpythonコードに関して質問があります。なぜ一度Falseになったatsplitがforループ内で再びTrueになるのでしょうか?以下にコードと結果を掲載しております。 def split_string(source,splitlist): output = [] atsplit = True for char in source:    if char in splitlist:      atsplit = True      print atsplit    else:       if atsplit:          output.append(char)          atsplit = False          print atsplit       else:          output[-1] = char return output out = split_string("This is a test-of the,string separation-code!"," ,!-") print out #>>> ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code'] False True False True False True False True False True False True False True False True False True ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code']tsplit = True

  • python3

    def walk(): for i in range(hor): if i == hor_now: print("*", end="") for h in range(var - 1): print("〇",end ="") print() else: for h in range(var): print("〇",end ="") print() print(walk) 普通に出力することはできるんですが、defでユーザー定義関数にすると<function walk at 0x000001541505B9D0>こうなってしまいます、なぜでしょうか?

  • Python勉強中の初心者です。

    只今、Pythonを勉強中です。オライリーの”初めてのPython”で勉強中なのですが途中で分からないところがあったので質問させてください。 >>>def min1 (*args): res = args[0] for arg in args[1:]: if arg < res: res = arg return res >>>print min1(3,4,1,2) 1 という参考が有り考えてたら訳が解らなくなってしまいツマづいていますでどういう流れで1になるのかわかる方アドバイスください。

  • pythonのエラーについて教えて下さい。

    pythonの勉強をおこなっている超初心者です。 ネットでみた。以下のサンプルコードを実行しようとしました。 # -*- coding: utf-8 -*- print u'モジュールのロード' def test(): print u'関数:testを呼び出しました' if __name__ == '__main__': print 'python-izm' # print 'パイソンイズム' test() しかし、以下の様なエラーとなってしまいます。 File ”test02.py"、line 9 print ’python-izm'  ^ indentionError:expected an indented block ネット調べてみたとことpythonのインデントのエラーだとわかりました。 pythonはインデントで実行範囲を認識するので、 そこがうまく記述できていないであろうとは思うのですが、何回か試したのですが うまく動いてくれません。 どなたか御指南下さい。

  • pythonの関数内での関数の定義について

    Python Cookbook 3rd の2章6節の内容でわからないことがあります。 コード import re #サンプルテキスト text = 'UPPER PYTHON, lower python, Mixed Python' #正規表現で文字のケースに合わせて置換する def matchcase(word) .....def replace(m): ..........text = m.group() ..........if text.isupper(): ...............return word.upper() ..........elif text.islower() ...............return word.lower() ..........elif text[0].isupper(): ...............return word.capitalize() ..........else: ..............return word .....return replace #実行分 re.sub('python', matches('snake'), text, flags=re.IGNORECASE) #実行結果 >>>'UPPER SNAKE, lower snake, Mixed Snake' このサンプルコードのmatchcase内のreplace関数に引数を渡していないと思うのですが、どのような仕組みでこのコードは動いているのでしょうか? m.group()とあるので実行分のre.sub(...)でのマッチしたという情報がreplace(m)のmに渡されているだろうとは思うのですが、なぜ引数を指定せずにそのようなことが起こるのかが理解できません。 何卒よろしくお願いします。

  • pythonについて

    pythonについて質問があります。 下記の組み合わせプログラムで、comb'(n,m)のn.mをループさせて、m=1から5、n=1から5のようにループさせたいと思っています。 どなたかご教授ください。 def comb(n, m, a = []): if m == 0: print a elif n == m: print range(1, m + 1) + a else: comb(n - 1, m, a) comb(n - 1, m - 1, [n] + a) よろしくお願いします。

  • VBAからPythonを動かしたいのですが…

    いつもお世話になっております。 icevainと申します。 python超初心者です。 【質問】 『VBAでPythonを動かす』という興味のあるサイトを見つけました。 https://qiita.com/O_LUPAN/items/1ceb5c950ff40f3558ab サイトのpythonコード #ここから import sys def sum(suji1, suji2): return suji1 + suji2 if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで サイトのpythonコードを無理やり変更して、 #ここから import sys def sum(suji1, suji2): rst="OK" return rst if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで OKがかえってくると思ったのですが、 0がかえってきてしまいます。 OKをかえすにはどうすればよいのかわかりません。 お分かりの方おりましたらご協力お願い致します。

  • python プログラミング

    pythonで、 def CircleArea(): a=r*r*3.14 print(r,a) というプログラムをunixのvimでcircle.pyで保存しました。 今度はこれをpythonで実行したいと思って, ターミナルに, circle.pyと入力しましたが, 実行しません。どうすればよろしいでしょうか? よろしくお願いします。

  • Pythonのコードの解説をお願いします

    このコードはスペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというものだとういうことは理解出来たのですが、なんでこういうコードを書いたぬぬかついんのか、 def removeExtraSpaces(theString): ans = '' flg = True for s in theString: if s == ' ': if flg: ans += s flg = False continue flg = True ans += s ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans return ans これを解説して

専門家に質問してみよう