1 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:25:51 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、 お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>950 辺りで 前スレ くだすれPython(超初心者用) その3 pc12.2ch.net/test/read.cgi/tech/1232055225/ 関連スレ Pythonのお勉強 Part33 pc12.2ch.net/test/read.cgi/tech/1240678081/
52 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:08:44 ] あたいは3Dソフトウェアのスクリプトで使ってるよ!
53 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 23:12:22 ] >>52 blender?
54 名前:デフォルトの名無しさん [2009/05/31(日) 23:35:32 ] いまいちどんなことができるのかわからないんだけど。 例えば@ファイヤーウォールが反応したら携帯にメールで知らせるとかは? Aひとつのフォルダに複数のmp3のデータが入っている。名前はごちゃごちゃ。 それを01.mp3〜0n.mp3にファイル名を変換することは可能ですか?
55 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 23:51:00 ] コンピュータならできて当たり前だろ……
56 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 00:02:51 ] >>54 1はどんなファイアウォールを使ってるかによる ログをテキストで定期的に書き出してくれるFWなら頑張れば出来る そうでない場合は可能だけどちょっと難しいかな 2は余裕。osやos.path見てみるといいよ
57 名前:デフォルトの名無しさん [2009/06/01(月) 00:26:33 ] >>56 ご丁寧にありがとうございます。 見てみますね。 はじめてのpython みんなのpythonあたりを読破すればA位は簡単にできますか? 本屋で立ち読みした時に、複雑な電卓をいじってるようで… いつになったらA見たいなことができるのかな?って疑問を持ちましたので。 ド素人ですいません。
58 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 00:54:52 ] >>57 初めてのPythonなら読破しなくても1/3ほど読めば十分じゃないかな あとは使えそうなライブラリを探してマニュアルを読む 必要な時間については人それぞれ。数時間、数日、数週間・・・ まあ半年かかるなんてことはないから心配いらないよ
59 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 01:01:37 ] 「はじめての」と「初めての」にとても大きな違いがあります >>57 はきっと「はじめての」なんでしょうな・・・
60 名前:デフォルトの名無しさん [2009/06/01(月) 01:07:37 ] 皆さん親切に本当にありがとうございます。 個人的にちょっと読んだだけですが「みんなのpython改訂版」が読みやすかったのですが (ちょっとだけしか見てませんが…) これでもOKですか?これでも1/3くらい読めば、ショボイプログラムが作れますか? 明日買ってきます。
61 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 01:14:48 ] それは初心者向けで突っ込んだ解説はしていない本だからすぐに全部読めるよ しょぼいプログラムを作るのが目的でネットの検索と併用すれば十分かと
62 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 01:42:36 ] >>59 「はじめての」人柱になってもらおうとか思って 似たタイトルの本があるとはあえて言わなかった。反省している >>60 1/3じゃ足りないかも。でもたいして問題にはならないよ 2を書くとしたら骨組みはこんな感じ import os for i, filename in enumerate(os.listdir(u'.')): if filename.endswith('.mp3') os.rename(filename, '%03d.mp3' % i)
63 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 02:38:56 ] みんなのPythonの改訂版ってPython3.0対応版でしょ その辺に転がってるコードが多いのはPython2.x系 言語仕様が一部変わってるから気をつけな 新しいものをとるか古いのを選ぶかは趣味の問題ではあるが 標準以外のモジュールは3.0にはまだ対応してなかったりもするから気をつけなよ まあ、仕様の変更点を把握しとかないといけないのはどちらを学ぶにしても同じだがね 本はちょっとしたプログラムを書きたいってだけなら挫折しないように薄いのにしときなw あとはオンラインドキュメントとかで適当に調べつつ作りたいもの作ればいいさ
64 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 03:06:12 ] >>56 元々 03.mp3 02.mp3 01.mp3 というファイルがあったとき 01.mp3 02.mp3 03.mp3 に名前を付け替えるのって簡単?
65 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 03:34:23 ] 一体どこが難しいんだ?
66 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 03:36:00 ] >>64 条件が良く分からないけど、番号を昇順に変えるの? 何とでも出来ると思うよ。
67 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 04:03:07 ] いや、お前達64が何言ってるのか理解してないだろう。 64が言ってるのはファイル名の重複でリネームするのに失敗する問題。
68 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 04:04:55 ] 一度別の名前にリネームすればいいじゃん。
69 名前:デフォルトの名無しさん [2009/06/01(月) 06:48:48 ] 邪魔になってる方のファイルを別の名前にするんですね
70 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 07:12:58 ] rename前に既存調べて既存だったら飛ばせば医院で内科医?
71 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 07:22:31 ] >>70 それが >>64 >>67 の意図する動作になってるかどうかは微妙 >>54 の2ならそれで良さそう とりあえず >>64 は仕様を明確にすべき
72 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 07:59:17 ] さすがくだすれw
73 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 08:56:03 ] つーか、パイソンと全然関係ないしw 一般のアルゴリズムが分からないって、言語以前の問題だからw
74 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:17:18 ] swapなんぞ誰でも思いつくアルゴリズムだろ
75 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:51:51 ] えっと、 スレ違いですので こちらへどうぞ pc12.2ch.net/test/read.cgi/tech/1243159710
76 名前:デフォルトの名無しさん [2009/06/01(月) 21:12:23 ] >>62 さん 素晴らしいコードありがとうございます。 勉強中でとても参考になります。完全に理解できていないのが申し訳ありませんが(汗 具体的な例をお願いできますか? 例えば、C:\Documents and Settings\user\デスクトップ\新しいフォルダ の中に、 abc.mp3 def.mp3 ghi.mp3 jkl.mp3という4つのデータがあります。 これらをソートした順に01.mp3〜04.mp3にリネームする。 宜しくお願い致します。
77 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:36:39 ] >>76 その前に自分で書いたコードを貼ってみて 動かなくても全然構わないから いきなり答え見たら実力つかないよ
78 名前:デフォルトの名無しさん [2009/06/01(月) 21:47:43 ] 全然そんなレベルじゃないんですよ(汗 すいません。
79 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:16:23 ] >>76 指定ディレクトリ内のファイル一覧を取得する os.listdir、glob.glob等 ファイル一覧を並び替え list.sort() ファイル名を変更 os.rename その他 os.path.join、os.path.abspath このあたりを調べればいけるんじゃない? とりあえずosとos.pathモジュールは一通りリファレンスに目を通しましょう。
80 名前:デフォルトの名無しさん [2009/06/01(月) 22:19:21 ] >>79 さん 本当にご親切にありがとうございます。 今日さっそく「みんpy」買ってきました。 面白いですね。まだプログラムって感じではないんですが… とても参考になりました。 またわからない事がありましたら宜しくお願い致します。
81 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:36:13 ] >>62 のコードだと mp3以外のファイルがあったら番号とばない?
82 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:52:35 ] >>81 飛ぶね。失礼しました count = 1 for filename in os.listdir(u'.'): if filename.endswith('.mp3'): os.rename(filename, '%03d.mp3' % count) count += 1
83 名前:デフォルトの名無しさん [2009/06/01(月) 22:57:49 ] >>79 さん ちょっと片言の言語で作ってみましたがrenameでのアイデアが… なにかヒントをお願いします。 #coding: UTF-8 import os TargetPath = u'C:\Documents and Settings\user\デスクトップ\Mariah.Carey' a=FileList = os.listdir(TargetPath) print u"[曲名一覧]" for f in a: print f else: print u"以上" b=len(a) print u"全部で",b,u"曲" c=range(1,b+1) print c,u"までのリストを作成" ここまででギブ…曲数分の数値をリストで作ってみて対応できればと…その後は… そもそも間違った考え方なんですかね…ネットで調べながらなのですいません。
84 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:24:31 ] >>76 #-*- coding: utf-8 -*- import os, sys, time, shutil from math import ceil, log def rename_to_number(srcdir, ext): files = filter(lambda x: x[-len(ext):]==ext, os.listdir(srcdir)) tmpdir = os.path.join(srcdir, 'tmp%s_%s' % (os.getpid(), time.time())) while os.path.exists(tmpdir): tmpdir += '0' os.mkdir(tmpdir) for f in files: src = os.path.join(srcdir, f) shutil.move(src, tmpdir) fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext) for i, f in enumerate(sorted(files)): src = os.path.join(tmpdir, f) dst = os.path.join(srcdir, fmt % i) shutil.copy(src, dst) #shutil.rmtree(tmpdir) # この行を有効にすると作業後テンポラリを削除します。 if __name__ == '__main__': srcdir = sys.argv[1] ext = sys.argv[2] if ext[0] != '.': ext = '.' + ext rename_to_number(srcdir, ext) # 使い方。このスクリプトを hoge.py と保存(UTF-8)した場合。 # python hoge.py ターゲットディレクトリ 対象拡張子 # と入力
85 名前:デフォルトの名無しさん [2009/06/01(月) 23:35:15 ] >>84 さん すごい。。。 レベルが違いすぎました。 出直してきます。 恥ずかしいですわ
86 名前:84 mailto:sage [2009/06/01(月) 23:55:00 ] 要求にあってなかったところを訂正。 ファイル名の先頭が 0 になるようにする。(12行目) × fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext) ○ fmt = '%%0%dd%s' % (1+ceil(log(len(files),10)), ext) 番号を 0からスタートじゃなく、1からにする。(15行目) × dst = os.path.join(srcdir, fmt % i) ○ dst = os.path.join(srcdir, fmt % (i+1))
87 名前:デフォルトの名無しさん [2009/06/02(火) 00:01:08 ] ディレクトリの指定は必要ないんですか?
88 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 00:19:05 ] けーすばいけーす
89 名前:デフォルトの名無しさん [2009/06/02(火) 17:09:47 ] お勉強スレのほうに書いたのですが、ちょっと質問のレベルが低すぎたみたいなので、こちらで聞かせていただきます;; 初歩的な質問で申し訳ありません。 .pyのついたファイルをウィンドウズで実行したいのですが、どのように設定をしたらいいでしょうか? python-3.0.1をインストールしてみたのですが、どうしたらいいのかイマイチよくわかりません;;
90 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 17:16:18 ] Python2.6.2をインストールして*.pyをダブルクリックしてみるよろし
91 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 17:32:05 ] >>89 Python 3.0 はプログラミングの初学者には今のところ向いてないよ >>90 の言う通りにしてコマンドプロンプトの使い方も併せて調べておくといいと思う
92 名前:デフォルトの名無しさん [2009/06/02(火) 18:13:35 ] ありがとうございます! 2.6.2ですね。 試してみます。
93 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:50:54 ] >>84 素敵だが初心者にやさしくないなぁ 無駄に丁寧だから本質じゃない部分につい目がいってしまう
94 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:05:17 ] >>93 本当にそうだな。 ただ、あそこまでやるなら、テンポラリディレクトリ作るのに何故 tempfile.mkdtemp()を使わないのかが非常に謎。
95 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 07:09:58 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
96 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:04:51 ] windows xp sp3 python2.5.3 try: getattr(obj, 'undefined_method') except AttributeError: pass だいぶ省略していますが、こんな感じのコードがあり、ここでmain内でエラーが発生すると UnboundLocalError: local variable 'AttributeError' referenced before assignment と出てしまいます AttributeErrorが見つからない理由と、そもそもUnboundLocalErrorがなんなのかよく理解出来ていないのですが、 原因をご存知の方いますでしょうか?
97 名前:96 mailto:sage [2009/06/03(水) 18:24:44 ] ごめんなさい解決しました その前に書いてあった except ImportError, AttributeError: の括弧忘れでした。
98 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:27:33 ] UnboundLocalError: ローカル変数名のリストにはあるけどまだ宣言されてないよ NameError: とにかくそんな名前知らんよ
99 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:14:50 ] >>97 エラーが出なくなっただけで 解決はしていないと思うよw
100 名前:デフォルトの名無しさん [2009/06/03(水) 19:19:47 ] 学生時代に資格試験取得でcは勉強したのですが、 社会人になってからは言語は一切触れてません。 インフラ側の人間だったのですが、 言語もかじっておきたくpythonをと考えています。 web上の入門サイトをいくつかやってる最中ですが、 いまいち手応えがありません。 そこで、勉強になるような課題?に適したものってなにかありますでしょうか。 また、Django、Ploneも気になっているのですが、 そうした勉強というのは市販されているテキストを一通りできれば 掴めるものでしょうか。 *正直、業務でも活かせることができるまでを 意識した勉強の仕方がわからないのが困っています、、、
101 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:48:45 ] >>100 まず要点をまとめてわかりやすく説明することを勉強しるw
102 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:59:08 ] オラ、宇宙一強くなりてえだ!
103 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:17:38 ] DjangoにしろPlone(Zope)にしろ癖が強いから初めての人には勧められないな >>100 に明確な目的があるなら別だけど 時間に迫られてないけど面倒な作業を自動化してみる辺りからやってみたら?
104 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:41:03 ] クックブックでも読めば? そして己の無知を自覚して初めてのPythonに取り組む まあ、業務で即生かせるようにはならないがな!
105 名前:デフォルトの名無しさん [2009/06/03(水) 23:23:42 ] みんなのPython改訂版のP.119の一番下のサンプルコードおかしくありませんか? お持ちの方がいましたら、見てみてください。 >>>for cnt in range((len(seq)): ... print seq[cnt] ... です
106 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:38:25 ] 端から見ると特におかしくないようだが・・・
107 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:52:39 ] ttp://mixi.jp/view_bbs.pl?id=43236791&comment_count=4&comm_id=1389875
108 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:36:51 ] カッコ。
109 名前:デフォルトの名無しさん [2009/06/04(木) 02:20:26 ] >>100 ここの課題でもやってみれば? pc12.2ch.net/test/read.cgi/tech/1153585095/ Django, Plone は 「Python 自体の勉強」 にはお奨めしない
110 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 03:36:56 ] とりあえずver2.5の日本語ドキュメントでいいから目を通せ。 チュートリアルをひととおりやって、それが終わったらライブラリリファレンスを読む。 用途や意味の分からないライブラリがあったら調べて、どういう時使うのか理解する。 目的ありきでもいいのかもしれないけど、道具を徹底的に理解するのも大事だと思う。 標準ライブラリだけでも、かなり実用的なものが揃ってるから分かってくると楽しいよ。
111 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 10:01:10 ] >>105 ひどい書籍ですね! ぜひとも買って確かめなければ!!!
112 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 12:55:57 ] >>100 > web上の入門サイトをいくつかやってる最中ですが、 > いまいち手応えがありません。 手応えがありませんって、 簡単すぎて全部わかっちゃったのか、 基本も理解出来ないのか、 どっちなんだ? 基本がわからないんだったら、何度も読み返して、 くだらない例題だと思っても、 自分で実際にコードを書きまくって理解しろよ。
113 名前:105 [2009/06/04(木) 23:00:47 ] >>>for cnt in range(len(seq)): ... print seq[cnt] ... でした。でもこれでもおかしいですよね? len()への引数で文字列を扱う際は""。 結果的にはどうしたいのか謎ですが、これが正解に近いですか? >>>a="seq" >>>b=range(len(a)) >>>b [0,1,2] >>>for cnt in b: ... print a[cnt] ... s e q >>> ではないですか? ってか単純に文字列に""が足りないだけで >>>for cnt in range(len("seq")): ... print "seq"[cnt] ... s e q でしょうか?上記の例は詳しくやってみました。
114 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:04:44 ] seqが変数なんだろ? 前で代入されてるんでしょ?
115 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:10:32 ] 105は友達がいないせいでmixi垢を持ってないんだな。 なによりそれが可哀想だ。
116 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:11:47 ] まあ、2ちゃんに貼ってあるmixiのリンクは普通踏まないがな・・・
117 名前:105 [2009/06/04(木) 23:14:00 ] >>114 かなり前までさかのぼっても代入された記述はないんですよ >>115 確かに友達は少ないかな?w mixi垢ってなに(汗
118 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 00:09:14 ] 書籍のサンプルコードなんだから一部抜粋なんて 普通にあるだろ。そうでなければタダの誤植。 だいたいseqっていう名前から 何らかのシーケンスを表す変数だって想像しろよ。 "seq"っていう文字列だなんて普通は思わないよ。
119 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 00:14:38 ] >>113 range(len(seq))はforで添え字アクセスをしたい場合に使う慣用句 こんな感じに使う >>> lines = [u'1行目', u'2行目', u'3行目'] >>> for linenum in range(len(lines)): ... print '%d: %s' % (linenum + 1, lines[linenum]) ... 1: 1行目 2: 2行目 3: 3行目 後々わかる日が来るから深く悩まず先に進むのが吉
120 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 00:18:22 ] >>119 あ、linenumになってないね。 linenum → i に訂正
121 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 00:29:17 ] おかしいのは105の脳みそでした
122 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 02:17:09 ] >>105 さんの脳みそ本当にだいじょうぶかなぁ ぜったい普通じゃないよね かわいそう
123 名前:デフォルトの名無しさん [2009/06/05(金) 03:11:03 ] クラスAのなかで[1,2,3]というリストを作ろうとしています。 で、次のようにコーディングしたらselfが定義されてない、って怒られました。 class A: def __init__(self): self.x = [] for i in range(1,4): self.x.append(i) Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> class A: File "<pyshell#5>", line 5, in A self.x.append(i) NameError: name 'self' is not defined なにがまずいのかわかりません。どなたかご指摘くださるとありがたいです。
124 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 03:23:15 ] >>123 インスタンスメソッドの第一引数(慣習としてselfを使う)は インスタンスオブジェクトを指す。 その for 文はインスタンスメソッドの外側にあるので、クラスを 生成するときに実行される。その時にselfは存在しない。 解決するにはインデントを修正する。 class A: def __init__(self): self.x = [] for i in range(1,4): self.x.append(i) ただし、こちらの方が綺麗 class A: def __init__(self): self.x = range(1,4)
125 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 10:02:50 ] インデントがずれてるんじゃねえの? スペースを全角に変換してもういちどコード張れや>123
126 名前:デフォルトの名無しさん [2009/06/05(金) 11:08:44 ] >>124 ありがとうございます。 インデントはつけています。投稿時につぶれてしまいました。すみません。 >>125 インデントは次のようにつけています。 class A: def __init__(self): self.x=[] for i in range(1,4): self.x.append(i)
127 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 11:13:27 ] >>126 バロス(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
128 名前:126 [2009/06/05(金) 11:31:20 ] あ〜、 for i ... のインデントは def __init__ ... より内側に来なきゃいけないのかな? どうもselfがよくわからんorz
129 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 13:20:52 ] self.x = [] の次の行は 既に別の空間だ
130 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:50:40 ] コードは $ sed -e "s/ /\ /g" test.py みたいに正規表現でhtmlの空白に置換するといいよ
131 名前:デフォルトの名無しさん [2009/06/05(金) 19:49:02 ] すごい初歩のことですみません。 リストでスライスのことですが、 a=range(10) a[1:3] 1,2 となります。 なぜ、1,2,3にならないのでしょうか? 0からのインデックスという説明がされているのですが、 0,1,2,3,4,5,6,7,8,9 とするのならば、a[1,3]であれば、1,2,3ではないのですか? こんなところでつまづいてしまっているのですが、どのように理解すればよいのでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 19:56:23 ] 後ろから2行目に間違いがありました。 a[1:3]でした。
133 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 19:59:19 ] >>131 スライスにおけるインデックスは文字の隙間と考えるのが定番 www.python.jp/doc/release/tut/node5.html#SECTION005120000000000000000
134 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:03:08 ] >>131 開始点は含み、終了点を含まない範囲を指定している。 記号で書けば、 [begin, end) こうすると、長さ0の範囲を [n:n] で表せる。 もしくは、長さを end - begin で計算することができる。 C++でも同じ考え方をしているよ。
135 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:04:16 ] >>133 なるほど。文字と文字の隙間にインデックスが付けられているのですね。 文字自体についているわけではなかったのか。 疑問が解けました。ありがとうございました。
136 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:06:47 ] 何につけ作法は作法で「そういうもの」と覚えてしまう方が早く学習進んで良い 理由付けやルールなんかは言語作者のもんだしさ…
137 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:09:47 ] 134さんもありがとう。 133さんのリンク先の図解で理解できました。 また、計算する際にも利用できるのですね。 今のところ、図解が理解できたので良しとします。 m(_ _)m
138 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:27:42 ] >>136 確かにそうなのかも知れないですけど、モヤモヤしていて理解できないことって、気持ちが悪いです。 しかも難しくて理解できないことじゃなくて、誰でも疑問を持ちそうな初歩的なことでしたから。 インデックスが、文字自体に付いていないということに気付きませんでした。
139 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:34:20 ] 小学校の算数レベルだろ
140 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:40:24 ] うーん、そうなのですか? 今の算数は、インデックスが0から始まりそれは文字に割り当てられてのではなく、 隙間に割り当てられているって習うんですか? 私に時には習った覚えはないです。
141 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:42:15 ] 誤字になってしまったので、書き直します。 うーん、そうなのですか? 今の算数は、インデックスが0から始まりそれは文字に割り当てられるのではなく、 隙間に割り当てられているって習うんですか? 私の時には習った覚えはないです。
142 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:46:20 ] >>141 釣られなくていいから
143 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:58:16 ] >>142 そっくりそのままお前に返したいw
144 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 21:46:27 ] >>143 くりそつ
145 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:37:15 ] つーか、単に-1に合わせてるだけの希ガス。
146 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 01:15:51 ] end - beginで length が取れるのが一番の魅力だと思う
147 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 09:58:05 ] >>146 カウンタが1から始まったりendが含まれる系の言語では あちらこちらに +1 とか -1 が散らばってて、一旦バグると どの +1 が間違ってるのか判らないもんな。
148 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 11:47:27 ] C とかで書くときもやっぱり for (i = begin; i < end; i++) だな。 for (i = begin; i <= end; i++) とか書いてるのみるとイラッとする。
149 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:39:39 ] >>148 場合によるね。 タグの値を順番になめる場合とか、結構 <= で比較する場合もあると思う。 for (tid = ID_START; tid <= ID_FINAL; ++tid) とか。
150 名前:148 mailto:sage [2009/06/06(土) 12:42:56 ] >>149 うん 場合によるとおもう 必要なときもあるよね でも <= を使うときにちょっといやな気分になるのはおれだけかな
151 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:54:49 ] 俺もなる。基本的に序数の場合はそれでいいと思う。 ただ for (double alpha = 0.0; alpha <= alpha_max; alpha += step) みたいに実数値の範囲みたいなのは<=じゃないとキモいと思う
152 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 14:00:30 ] 普通はID_FINALってやつを最後の次の値として定義するけどな。 そうでないと斜め読みしてるときにいちいち目がとまって 本当にただしいか確認しないとといけない。 もちろん、>>151 みたいなalpha_maxとかINT_MAXみたいに どうしようもない場合もあるんだが。 郷にいれば郷に従えみたいな感じかなあ。