09/12/02 07:56:47
【 課題 】和歌について考察する問題。
歌 ... こぬ人を待つほの浦の夕凪はやくやもしほの身もこがれつつ (定家)
これはかなり複雑なうたです。
人をまつとは「待つ」であり、「松」です。まつ帆だからです。松の姿に似た帆です。
もちろん松は浦の背景でもあります。浦は夕凪ですから心は風を「待って」もいます。
風はありませんから、待ってもこぬ人なのです。風があの人なのかそれとも帆船なのか
微妙です。浦は「浦」であると同時に心の「裏」であり、あの人(風)の気持ちを「占」なふ、
うらでもあります。
「焼くや」(やいているのだろうか)とは、恋に焦がれて身を焼いているのであり、
やくやもしほとは藻塩(自分)が陽にあぶられ、渇き、焼かれ、煙でいぶされ、さらに
煮られ、再び乾かされというような、製塩法の愛の地獄絵であり、身もこがれという
言葉には「藻」がここでも含まれています。製塩の煙は夕凪の浦に実際に漂って
いるのかもしれません。
以上のような、この歌に含まれる語とそれからくる連想をプログラムで表現しなさい。
53:デフォルトの名無しさん
09/12/23 23:58:06
Windows XP上で、
標準入力から入力されたパスを調べて、
1.実在するディレクトリだったらそのディレクトリとサブディレクトリの中のファイルのフルパスの一覧を標準出力に出力する。
2.実在するファイルだったらそのフルパスを標準出力に出力する。
3.実在しないパスだったらエラーを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
54:デフォルトの名無しさん
09/12/24 00:13:41
┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
55:デフォルトの名無しさん
09/12/24 11:56:36
>>53
import sys
import os
import os.path
s = sys.stdin.readline().rstrip('\n')
if os.path.exists(s):
if os.path.isdir(s):
for x in os.listdir(s):
print os.path.abspath(x)
else:
print os.path.abspath(s)
else:
print 'Not exists.'
56:53
09/12/24 13:49:31
Pythonだとそんなに簡潔に書けるんですね。
ありがとうございます
(>_<)
57:デフォルトの名無しさん
09/12/25 05:13:16
>そのディレクトリとサブディレクトリの中の
題意を満たしていないような希ガス
58:デフォルトの名無しさん
09/12/25 11:20:37
>>53
#ほぼ>>55の功績
import os, os.path, sys
s = sys.stdin.readline().rstrip('\n')
if os.path.exists(s):
if os.path.isdir(s):
for root, dirs, files in os.walk(s):
for fname in files: print os.path.join(root, fname)
else:
print os.path.abspath(s)
else:
print 'Not exists.'
59:デフォルトの名無しさん
09/12/25 12:16:49
>そのディレクトリと
題意を満たしていないような希ガス
60:デフォルトの名無しさん
09/12/25 19:23:14
宿題なんだから
ちょっと間違えてるくらいが丁度良い
61:53
09/12/25 20:24:29
みなさんありがとうございます。
感謝です。。
62:53
09/12/25 20:27:25
>>58
Traceback (most recent call last):
File "aaaaaa.py", line 6, in ?
for root, dirs, files in os.walk(s):
AttributeError: 'module' object has no attribute 'walk'
こんなエラーがでました。
どうすれば良いでしょうか。
63:デフォルトの名無しさん
09/12/25 21:33:57
pythonのバージョンは? python -Vで調べられる
64:デフォルトの名無しさん
09/12/25 22:32:31
C:\>python -V
Python 2.2.2
って言われました。
65:デフォルトの名無しさん
09/12/25 22:54:12
>>64
os.walkは2.3から
os.listdirでも使って再帰で書く
66:デフォルトの名無しさん
09/12/25 23:04:24
>>65
えと・・・最新をDLしてきてインストールすれば
大丈夫でしょうか。
67:デフォルトの名無しさん
09/12/25 23:09:53
>>66
それがベスト
68:デフォルトの名無しさん
09/12/25 23:27:07
>>67
ありがとうございます。
ご教示に従います。
69:68
09/12/25 23:37:58
できました。
ありがとうございました。
70:デフォルトの名無しさん
09/12/28 08:00:42
Windows XP上で、
標準入力から入力されたパスを調べて、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
前からみて順に正規表現regex="~~"にマッチする文字列を全て"hogehoge"に置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
71:デフォルトの名無しさん
09/12/28 08:02:24
>>70
×2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
○2.実在 する ディレクトリでなかったらエラーメッセージを標準出力に出力する。
72:デフォルトの名無しさん
09/12/28 08:05:23
> regex="~~"にマッチする文字列を全て"hogehoge"
これはユーザにどうやって指定させるんだ
それともスクリプト中に埋め込んでしまっていいのか
というかパスを置換するのはわかったけど
ファイルの中身まで置換するっていうのは本気なのか
73:デフォルトの名無しさん
09/12/28 08:17:40
>>72
> これはユーザにどうやって指定させるんだ
ごもっともです。
ちょっと変えて、
setting.iniを読み込んで1行目を
> 標準入力から入力されたパスを調べて、
これに代えて調べるパスとします。
また2行目を
regex="~~" #正規表現
3行目を
"hogehoge" #置換後の文字列
として取得するとしてください。
> というかパスを置換するのはわかったけど
> ファイルの中身まで置換するっていうのは本気なのか
本気です。
・・・宿題なものでして。
74:デフォルトの名無しさん
09/12/28 09:28:50
Python 2.6.4です。
これが分かりません。
> 問 1 次のプログラムの実行結果は 1になる。
> a='apple'
> b='apple'
> print a is b # 1 を出力
> つまり a と b はデータを共有している。これで問題が発生しない理由について考えよ。
>
> 問 2 次のプログラムの実行結果は 0 になる。
> a=('apple',1)
> b=('apple',1)
> print a is b # 0 を出力
> つまり a と b はデータを共有していない。タプル形式の要素への代入が禁じられているにも
> かかわらず安全策が採られているのである。何故か? もしも要素の性格に関わらずタプル形
式のデータを共有した場合に、どのような問題が発生するかを具体例で示せ。
URLリンク(codepad.org)
どうしてでしょうか?
問1は
'apple'は書き換え不可能だから共有させても問題ないため
だと思いますが問2が分かりません。
75:デフォルトの名無しさん
09/12/28 10:02:38
>>74
a = ('apple', [])
b = ('apple', [])
で考えてみたらいいんじゃないかな
筋の悪い問題なのであまり深く考えないでいいよ
76:デフォルトの名無しさん
09/12/28 10:05:33
念のために付け加えると
> a='apple'
> b='apple'
> print a is b # 1 を出力
これで1になるか0になるかは実装依存
77:74
09/12/28 10:10:06
ありがとうございます。
a=('apple',[])
b=('apple',[])
だとすると
a[1]=[2]
は不可能ですが
a[1].append(2)
こんなことは可能だから、ってことですね。
なるほど。
78:デフォルトの名無しさん
09/12/28 13:52:08
a[1][:]=[2]
79:>70
09/12/29 00:02:10
すみません。
>>70 お願いします。
補正したものは以下です。
########################################################3
Windows XP上で、
まず 同じディレクトリにあるsetting.iniを読み込んで
その1行目, 2行目, 3行目を
文字列p, regex, aftに格納する。
pをパスとして調べ、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
> 前からみて順に正規表現regexにマッチする文字列を全てaftに置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
80:デフォルトの名無しさん
09/12/29 00:18:18
最近はそんな宿題が出るのか
81:デフォルトの名無しさん
09/12/29 08:21:32
どの言語でもいいからこんなのを作りなさい
という感じの一般教養+αな宿題です。
82:デフォルトの名無しさん
10/01/01 08:57:27
あけましておめでとうございます。
すみませんどなたか
>>79
お願いできませんか?
ファイル名はともかく全てのファイルの中身を置換するというところがいまひと
つできなさそうです。
文系なのですが何を間違ったかこんな難しそうな科目を…。
83:デフォルトの名無しさん
10/01/01 14:36:18
#!/usr/bin/python
import sys, os, re
with open("setting.ini") as f:
path = f.readline().rstrip("\r\n")
regex = f.readline().rstrip("\r\n")
repl = f.readline().rstrip("\r\n")
if os.path.isdir(path):
for dirpath, dirnames, filenames in os.walk(path):
for name in filenames:
path = os.path.join(dirpath, name)
contents = open(path).read()
if re.search(regex, contents):
open(path, "w").write(re.sub(regex, repl, contents))
else:
sys.stderr.write("Error\n")
84:82
10/01/01 20:32:10
>>83
ありがとうございます。
とても助かりました。
新年早々お手数をおかけいたしました。
85:デフォルトの名無しさん
10/01/17 21:12:41
【課題】
同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
処理の早いものには追加点を与える。
【期限】 1月18日(月) 午後1時
【Ver】 Python 2.6
よろしくおねがいします。
86:デフォルトの名無しさん
10/01/17 22:43:37
A, B の初期値と結果の具体例が欲しい。
A, B が同じ長さのリストと言ってるが、
共通してない要素はソートの結果のどこに入るんだ?
87:デフォルトの名無しさん
10/01/18 01:08:35
>>86
問題よくよめ
88:デフォルトの名無しさん
10/01/18 01:20:42
mysort = lambda A, B: [t[1] for t in sorted(zip(B, A))]
89:デフォルトの名無しさん
10/01/18 13:14:38
>>85
比較用の値ってなんですか?
あれ、時間切れかな。
90:デフォルトの名無しさん
10/01/18 17:06:43
>>89
> 比較用の値ってなんですか?
例えば、[3, -4, 10, -1]を
絶対値の大きさ順に並べるとすると
比較用の値は[3, 4, 10, 1]になる。
具体的には、
>>> A = [3, -4, 10, -1]
>>> B = map(abs, A)
>>> B
[3, 4, 10, 1]
>>> mysort(A, B)
[-1, 3, -4, 10]
>>> sorted(A, key=abs)
[-1, 3, -4, 10]
これで理解できなければ
アルゴリズムの教科書をソートキーで引いてくれ。
91:85
10/01/18 22:42:26
>>88さんの方法でできました。
たった1行で出来ちゃうんですね。十数行も書いたあげく動かなかった俺って…
ありがとうございました。
92:デフォルトの名無しさん
10/01/27 00:28:55
●カップラーメンのタイマーを作成●
・tkinterをしようしてGUIで操作できるようにする。
・3分、5分、…といくつか選択できるようにする。
スマートなコードを宜しくお願い致します。
93:デフォルトの名無しさん
10/01/27 00:43:10
概出
答えは過去ログでどうぞ
94:デフォルトの名無しさん
10/01/27 01:46:02
#!/usr/bin/python
import Tkinter as Tk
import time
from functools import partial
class NoodleTimer(Tk.Frame):
def __init__(self, master=None):
Tk.Frame.__init__(self, master)
self.label = Tk.Label(self, text='Timer', font='Arial 20')
self.label.pack(side='left')
menubutton = Tk.Menubutton(self, text='>')
menubutton.pack()
menu = Tk.Menu(menubutton, tearoff=0)
menu.add_command(label='1 minutes', command=partial(self.start, 60))
menu.add_command(label='3 minutes', command=partial(self.start, 180))
menu.add_command(label='5 minutes', command=partial(self.start, 300))
menubutton.config(menu=menu)
def start(self, sec):
self.finish_time = time.time() + sec
self.tick()
def tick(self):
t = self.finish_time - time.time()
if t < 0:
self.label.config(text="Time's up!")
else:
self.label.config(text='%02d:%02d'%(t/60, t%60))
self.after(100, self.tick)
if __name__ == '__main__':
app = NoodleTimer()
app.pack()
app.mainloop()
95:デフォルトの名無しさん
10/01/27 02:51:47
>>94
すごい!
ありがとうございます。
参考にして勉強させて頂きます。
ちなみにVBも平行して学習しているんですが(意外といい)
出てくる用語はほぼ同じと考えてもいいですか?
クラスとか、継承とか、オブジェクトとか
96:デフォルトの名無しさん
10/01/27 03:00:07
VBに継承でてくんの?
97:デフォルトの名無しさん
10/01/27 04:10:40
参考書には書いてあるんですよ
98:デフォルトの名無しさん
10/01/29 21:55:33
VBの継承ってどんなのか解らんが
クラスやオブジェクトについてはだいたい一緒じゃね
個人的にVBは戻り値の設定と関数からの脱出が別れてるとこが面白いな
99:デフォルトの名無しさん
10/01/30 00:11:24
面倒なだけで面白くもなんともない
さらに戻り値設定し忘れとか起こすしろくなことにならない
言語仕様として糞
100:デフォルトの名無しさん
10/01/30 00:28:46
>>99
> 言語仕様として糞
というか言語自体として糞
101:デフォルトの名無しさん
10/01/30 00:42:08
VBの継承ってどんなの?
102:デフォルトの名無しさん
10/01/30 00:43:15
>>100
VB は Linux で動かないもんなぁ
103:デフォルトの名無しさん
10/01/30 13:48:02
>>102
Linux で動かないの?
なんつうクソ言語
104:ゆかちん
10/02/13 22:59:26
お疲れ様です!
こんなのやってるんですがヘルプお願いします。
配列作って文字列を入れればいいんでしょうか?
よろしくお願いします。
以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
105:デフォルトの名無しさん
10/02/13 23:06:52
import random
random.randint(0, 4) # 0 から 4 をランダムで返す
考え方はそれであってるからあとはがんばって
106:ゆかちん
10/02/13 23:20:56
配列の作り方をお願いします
乱数のところはわかりました。ありがとうございます!
スキージャンプまでになんとかせねば
107:デフォルトの名無しさん
10/02/13 23:43:33
配列ってより、リストかタプルな。てか、choice使うと楽。
import random
random.choice(["あいうえお", "かきくけこ", "以下略"])
108:デフォルトの名無しさん
10/02/14 00:11:45
うーむそれだとスケールできないだろ
5行ならいいが1000行でやろうとするとその方法だと無理
109:デフォルトの名無しさん
10/02/14 01:03:38
ファイルか標準入力から読み込ませたいな
110:デフォルトの名無しさん
10/02/14 02:51:13
>>108
いかにも使い捨てっぽいプログラムに高望みしないの。
エディタに正規表現置換ついてるでしょ。
>>109
with open("hoge.txt") as f:
lines = [line for line in f]
print random.choice(lines)
111:デフォルトの名無しさん
10/02/14 13:43:29
タプルって何?
112:デフォルトの名無しさん
10/02/14 13:59:28
immutable(変更不能)なシーケンス
dictのキーにできる
わからなければリストを使ってれば良い
113:ゆかちん
10/02/14 15:30:01
あん、できた。ありがとうございますん!
114:デフォルトの名無しさん
10/02/14 15:33:23
print 'aaa'
if boolean :
~ここ~
print 'bbb'
print 'ccc'
上のソースにて、~ここ~の部分に何か入れて、
このプログラムを終了してしまいたいのですが、
どうすればいいでしょうか?
booleanがTrueの時にプログラムを終了したいということです。
よろしくお願い申し上げます。
115:デフォルトの名無しさん
10/02/14 15:35:28
ちょっとスレチな気がするんで、別すれに行ってきます
すみません。
116:デフォルトの名無しさん
10/02/14 16:13:40
print 'aaa'
if boolean :
raise Exception
print 'bbb'
print 'ccc'
117:114
10/02/14 16:39:47
>>116
ありがとうございます。
118:デフォルトの名無しさん
10/02/14 18:37:05
おっぱいうp
119:デフォルトの名無しさん
10/02/14 23:28:30
>>114
環境によって適切な終了方法が違う気がするけど
import sys
sys.exit()
が使いやすいと思う。
120:デフォルトの名無しさん
10/02/15 07:02:06
raise SystemExit
で良いらしい (import sys したくないとき)
121:デフォルトの名無しさん
10/02/21 11:05:30
教える人は自分が偉くなったと勘違いをしているのか…
122:デフォルトの名無しさん
10/02/21 18:55:28
は?教えてやるんだから偉いんだお
123:デフォルトの名無しさん
10/02/24 23:50:04
URLリンク(www.python.jp)
124:デフォルトの名無しさん
10/02/26 14:58:29
少なくとも匿名掲示板で教えられる方が偉いなんてことはあり得ないな
125:デフォルトの名無しさん
10/02/27 00:46:13
import sys って具体的にどういうときに使うんですか?
126:デフォルトの名無しさん
10/02/27 00:52:06
sysをimportしたい時
127:デフォルトの名無しさん
10/02/27 14:21:25
sys.なんたら が必要なとき。