Python の宿題ここで答えます Part 2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/11/16(月) 06:27:361:問題文は自己省略せずに、直接全部貼り付けてください。
2:課題の「丸投げ」が最も好ましい提示法です。なるべく丸投げしてください。
3:数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。
4:課題&宿題関連の質問はOKですが、それ以外の一般的な質問は禁止です。
5:もし回答プログラムがアップされたら、その返答と動作報告をお願いします。
【課題提示用テンプレ】
【 課題 】与えられた課題文をそのまま書きます 《必須》
【 用語 】数学用語、専門用語の意味、説明を書きます 《あれば必須》
【 期限 】提出期限、解答希望日があれば書きます
【 Ver 】希望するPythonバージョンがあれば書きます(必要があればOSも)
【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。
丸投げでない場合は、途中までのソースとその経過報告、
質問点、疑問点を書きます(なるべく丸投げにしてください)
【回答プログラムの掲載場所】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
前スレ
http://pc12.2ch.net/test/read.cgi/tech/1153585095/
0002デフォルトの名無しさん
2009/11/16(月) 06:31:21│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0003デフォルトの名無しさん
2009/11/16(月) 07:14:48言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0004デフォルトの名無しさん
2009/11/16(月) 08:42:25│●│!おっ
└─┘っぱ い!い!お おっ
│● ぱお│
( ゚∀゚っぱ! _ ぱい)彡
└─┤ い
┌─┬⊂彡 ∩
0005デフォルトの名無しさん
2009/11/16(月) 11:11:580006デフォルトの名無しさん
2009/11/16(月) 11:26:00def primes():
g = count(2)
while True:
p = g.next()
yield p
g = ifilter(lambda n, p=p: n % p, g)
def zeta(s):
return reduce(lambda x, y: x * (1 / (1 - p ** -s)), primes(), 1)
0007デフォルトの名無しさん
2009/11/16(月) 22:41:15def primes():
g = count(2)
while True:
p = g.next()
yield p
g = ifilter(lambda n, p=p: n % p, g)
def zeta(s):
return reduce(lambda x, y: x * (1 / (1 - p ** -s)), primes(), 1)
if __name__ == '__main__:
for s in range(100):
print s, zeta(s)
0008デフォルトの名無しさん
2009/11/16(月) 23:48:000009デフォルトの名無しさん
2009/11/17(火) 02:38:07print [i for i in xrange(1, n + 1) if n % i == 0]
0010デフォルトの名無しさん
2009/11/17(火) 13:19:050011デフォルトの名無しさん
2009/11/17(火) 22:20:400012デフォルトの名無しさん
2009/11/17(火) 22:30:52すぐに答えが出なくて試した奴プギャーとかそんなんじゃないよね?
0013デフォルトの名無しさん
2009/11/17(火) 23:03:530014デフォルトの名無しさん
2009/11/18(水) 00:14:48r = {}
while val % 2 == 0 and val >= 4:
r[2] = r.get(2, 0) + 1
val /= 2
odd = 3
while odd < val:
if val % odd == 0:
r[odd] = r.get(odd, 0) + 1
val /= odd
else:
odd += 2
r[val] = r.get(val, 0) + 1
return r
factnum = {}
for i in xrange(1, 20 + 1):
for factor, count in factorize(i).iteritems():
factnum[factor] = max(factnum.get(factor, 0), count)
print reduce(lambda a, b: a * b, [f ** c for (f, c) in factnum.iteritems()])
これで合ってるだろうか...
0015デフォルトの名無しさん
2009/11/18(水) 00:51:14def gcd(a,b):
while a%b:
a,b=b,a%b
return b
def lcm(a,b):
return a*b/gcd(a,b)
def fact(n):
r=1
while n>1:
r=lcm(r,n)
n-=1
return r
print fact(20)
0016デフォルトの名無しさん
2009/11/18(水) 00:56:27ちょっとだけ簡略化。
def gcd(a, b):
while b:
a, b = b, a % b
return a
def lcm(a, b):
return a * b / gcd(a, b)
def fact(n):
r = 1
while n > 1:
r = lcm(r, n)
n -= 1
return r
print fact(20)
0017デフォルトの名無しさん
2009/11/18(水) 01:13:08return reduce(lcm, range(2, n+1), 1)
0018デフォルトの名無しさん
2009/11/18(水) 19:17:49http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html
これをやろうとしていますが、「アプリケーションのテスト」のところで、
「次のコマンドで helloworld ディレクトリまでのパスを指定し、Web サーバーを起動します。
google_appengine/dev_appserver.py helloworld/」
からわからなくなりました。
コマンドプロンプトで実行するんでしょうか。
helloworldフォルダをどこにおくべきでしょうか。どう指定するのでしょうか。
よろしくお願いいたしますorz
0019デフォルトの名無しさん
2009/11/18(水) 20:27:180020デフォルトの名無しさん
2009/11/19(木) 17:53:23たとえば,6の約数は 1, 2, 3, 6 であり,
6 = 1 + 2 + 3
なので,6は完全数である.
1000以下のすべての完全数を表示するプログラムを作成せよ.
0021デフォルトの名無しさん
2009/11/19(木) 18:51:57def divisor(n):
return set(reduce(lambda x, y: x + y, [[i, n / i] for i in range(2, int(n**.5) + 1) if not (n % i)], []))
def perfectnumber(limit):
g = count(1)
while True:
p = g.next()
if sum(divisor(p)) + 1 == p: yield p
if p >= limit: break
if __name__ == '__main__':
for n in perfectnumber(1000):
print n
1
6
28
496
0022デフォルトの名無しさん
2009/11/19(木) 18:53:300023デフォルトの名無しさん
2009/11/19(木) 18:57:52return [x for x in xrange(1,n+1) if n%x == 0]
def comp_num(n):
return True if n == sum(divisors(n)[:-1]) else False
for n in xrange(1,1001):
if comp_num(n):print n
6
28
496
0024デフォルトの名無しさん
2009/11/19(木) 19:00:14def divisor(n):
return set(reduce(lambda x, y: x + y, [[i, n / i] for i in range(2, int(n**.5) + 1) if not (n % i)], []))
def perfectnumber(limit):
g = count(2)
while True:
p = g.next()
if sum(divisor(p)) + 1 == p: yield p
if p >= limit: break
if __name__ == '__main__':
for n in perfectnumber(1000):
print n
0025デフォルトの名無しさん
2009/11/19(木) 19:56:12return True if n == sum(divisors(n)[:-1]) else False
↓
def comp_num(n):
return not bool(n - sum(divisors(n)[:-1]))
0026デフォルトの名無しさん
2009/11/19(木) 20:20:230027デフォルトの名無しさん
2009/11/19(木) 20:33:520028デフォルトの名無しさん
2009/11/19(木) 20:44:022. 氏名として"END"が入力されるまで1.を繰り返す.
3. "END"が入力されたら,ディクショナリの内容を "氏名\t電話番号\n" の形式でファイルに書き出す.
0029デフォルトの名無しさん
2009/11/19(木) 20:50:41これ前スレにあった気が
0030デフォルトの名無しさん
2009/11/19(木) 22:17:362. 関数 prime(n) を使用して,1000以下の素数をすべて表示するプログラムを書け.見つかった個数も表示すること.
Hint
1. 素数とは,1とその数自身のみを約数に持つ数である(ただし,1を除く).
2. 言い換えると,2からn-1までのいずれでもnが割り切れない場合,nは素数である(ただし,n > 2の場合).
3. または,2からn-1までのいずれか1つでもnを割り切ることができる場合,nは素数ではない(同上).
0031デフォルトの名無しさん
2009/11/19(木) 22:27:51単に「数」じゃなくて「自然数」「整数」って言わないとな。
0032デフォルトの名無しさん
2009/11/19(木) 22:40:570033デフォルトの名無しさん
2009/11/20(金) 00:00:29ちょびっとだけチート。
def prime(n):
r = []
for x in range(2, n + 1):
if not [i for i in r if x % i == 0]:
r += [x]
x += 1
return r[-1] == n, len(r)
print prime(100)
print prime(1000)
cnt = 0
for n in range(2, 1000 + 1):
if prime(n)[0]:
cnt += 1
print cnt
0034デフォルトの名無しさん
2009/11/20(金) 01:54:05> たとえば ['foo', 'hoge', '@fuga', 'piyo', 'moe', '@hoe']
「@」から始まる文字列の前後でリストを分解して
> ['foo', 'hoge'] ['@fuga', 'piyo', 'moe'] ['@hoe']
新たなリストの要素とし
> [ ['foo', 'hoge'], ['@fuga', 'piyo', 'moe'], ['@hoe'] ]
そのリストを返す関数を定義しなさい。
リストを分解する文字「'@'」は引数で指定できると望ましい。
バージョンは2.5と2.6で動くものをお願いします。
0035デフォルトの名無しさん
2009/11/20(金) 02:05:19r = []
t = []
for i in seq:
if t and i.startswith(m):
r.append(t)
t = []
t.append(i)
if t:
r.append(t)
return r
print split_list(['foo', 'hoge', '@fuga', 'piyo', 'moe', '@hoe'])
0036デフォルトの名無しさん
2009/11/20(金) 02:23:36http://codepad.org/PYgcfR3z
0037デフォルトの名無しさん
2009/11/20(金) 02:28:40インデントがずれてるねぇ
http://codepad.org/2qWBifXW
003834
2009/11/20(金) 02:32:450039デフォルトの名無しさん
2009/11/20(金) 18:15:24Hint
分子と分母をそれぞれアトリビュートとして持つ
コンストラクタには分子と分母をそれぞれ引数として与える
printすると,"分子/分母"の形で表示されるようにする
たとえば,1/2 や 5/8 など
プログラムは次のような形になる
# 分数クラス
class Fraction(object):
def __init__(...):
// __init__()のコード //
def __str__(self):
// __str__()のコード //
# 1/3を作る
f1 = Fraction(1, 3)
# 2/5を作る
f2 = Fraction(2, 5)
# 表示してみる
print f1, f2
0040デフォルトの名無しさん
2009/11/20(金) 18:21:32>>> class Fraction(object):
... def __init__(self, p, q):
... self.p = p
... self.q = q
... def __str__(self):
... return '%d/%d' % (self.p, self.q)
...
>>> f1 = Fraction(1, 3)
>>> f2 = Fraction(2, 5)
>>> print f1, f2
1/3 2/5
0041デフォルトの名無しさん
2009/11/20(金) 18:22:020042デフォルトの名無しさん
2009/11/20(金) 18:24:12∧ (´・ω・) (・ω・`) ∧∧ ヒソヒソ・・・
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ ヒソヒソ・・・
u-u (l ) ( ノu-u
`u-u'. `u-u'
0043デフォルトの名無しさん
2009/11/24(火) 19:45:10・辺の数と1辺の長さをアトリビュートとして持つ (コンストラクタは引数として辺の数と1辺の長さを取る)
・printすると次のように表示される
[Polygon] 辺の数: 5, 辺の長さ: 100
・周囲の長さを返すメソッド(perimeter)を持つ (引数なし)
0044デフォルトの名無しさん
2009/11/24(火) 20:45:280045デフォルトの名無しさん
2009/11/25(水) 22:27:19・辺の長さのみを引数に与えてインスタンスを生成する
・自身の面積を計算して結果を返すメソッドarea()を持つ
√3 = 1.73 としてよい
メインルーチンでは,実際にインスタンスを生成し,各インスタンスについて,インスタンス自身,周囲の長さ,面積の3項目を表示するようにせよ.
0046デフォルトの名無しさん
2009/11/25(水) 22:29:290047デフォルトの名無しさん
2009/11/29(日) 09:49:56百人一首の中から第一文字が「や」の四枚を選んで、徹底的に練習することに
しました。四枚とは、
やすらはでねなましものをさよふけてかたぶくまでのつきをみしかな
やへむぐらしげれるやどのさびしきにひとをもみをみうらみざらまし
やまざとはふゆぞさびしさまさりけるひとめもくさもかれぬとおもへば
やまがはにかぜのかけたるしがらみはながれもあへぬもみぢなりけり
ルールは、
1) 二人ゲームである。
2) 四枚のなかから無作為に二枚を選び自分と相手の札とする。
3) 読み手は四枚全部読み上げる。いたがって空札(取る札がない)が二枚含まれる。
4) 一枚取った時点で勝負はつくが、残りの一枚も競うこととする。
[問題] 乱数を使ってそれぞれの持ち札を決め、それを表示します。
つぎに、読み札の順番を決めます。これはこの段階では表示しません。
一首、読み、それを表示し、
1) 空札 : 何文字目まで読まれてそれがわかったか
2) 相手札 : 同上
3) 自分札 : 同上
を表示しなさい。これを繰り返し、取り札がなくなったらゲームオーバー。
4) 二つのモードで作りなさい
1) 読まれた札を二人とも記憶している。
2) 読まれた札は忘れてしまう。
実際には取り札には下の句が書かれていますが、ここでは一首全体をお互い理解しているものとします。
004847
2009/11/29(日) 09:54:15四人一首問題ですねw いたがって->従って
004947
2009/11/29(日) 10:12:02読み札が表示されたら、キーボードから答えを入力という作り方もあると
思いますが。
0050デフォルトの名無しさん
2009/11/29(日) 11:55:25import random
remember = True
cardall = set([
u"やすらはでねなましものをさよふけてかたぶくまでのつきをみしかな",
u"やへむぐらしげれるやどのさびしきにひとをもみをみうらみざらまし",
u"やまざとはふゆぞさびしさまさりけるひとめもくさもかれぬとおもへば",
u"やまがはにかぜのかけたるしがらみはながれもあへぬもみぢなりけり",
])
hand1, hand2 = random.sample(cardall, 2)
print "自分札:", hand1; print "相手札:", hand2; print
def specify(card, cardset):
for i in xrange(len(card)):
if sum(card[:i] == c[:i] for c in cardset) == 1: return i
rem = set()
remain = 2
for card in random.sample(cardall, 4):
print card
n = specify(card, cardall - rem)
if card == hand1:
print "自分札:", n; remain -= 1
elif card == hand2:
print "相手札:", n; remain -= 1
else:
print "空札:", n
if remain == 0:
print "Game Over"; break
if remember: rem.add(card)
0051デフォルトの名無しさん
2009/11/29(日) 19:44:36ありがとうございます。
0052デフォルトの名無しさん
2009/12/02(水) 07:56:47歌 ... こぬ人を待つほの浦の夕凪はやくやもしほの身もこがれつつ (定家)
これはかなり複雑なうたです。
人をまつとは「待つ」であり、「松」です。まつ帆だからです。松の姿に似た帆です。
もちろん松は浦の背景でもあります。浦は夕凪ですから心は風を「待って」もいます。
風はありませんから、待ってもこぬ人なのです。風があの人なのかそれとも帆船なのか
微妙です。浦は「浦」であると同時に心の「裏」であり、あの人(風)の気持ちを「占」なふ、
うらでもあります。
「焼くや」(やいているのだろうか)とは、恋に焦がれて身を焼いているのであり、
やくやもしほとは藻塩(自分)が陽にあぶられ、渇き、焼かれ、煙でいぶされ、さらに
煮られ、再び乾かされというような、製塩法の愛の地獄絵であり、身もこがれという
言葉には「藻」がここでも含まれています。製塩の煙は夕凪の浦に実際に漂って
いるのかもしれません。
以上のような、この歌に含まれる語とそれからくる連想をプログラムで表現しなさい。
0053デフォルトの名無しさん
2009/12/23(水) 23:58:06標準入力から入力されたパスを調べて、
1.実在するディレクトリだったらそのディレクトリとサブディレクトリの中のファイルのフルパスの一覧を標準出力に出力する。
2.実在するファイルだったらそのフルパスを標準出力に出力する。
3.実在しないパスだったらエラーを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
0054デフォルトの名無しさん
2009/12/24(木) 00:13:41│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0055デフォルトの名無しさん
2009/12/24(木) 11:56:36import 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.'
005653
2009/12/24(木) 13:49:31ありがとうございます
(>_<)
0057デフォルトの名無しさん
2009/12/25(金) 05:13:16題意を満たしていないような希ガス
0058デフォルトの名無しさん
2009/12/25(金) 11:20:37#ほぼ>>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.'
0059デフォルトの名無しさん
2009/12/25(金) 12:16:49題意を満たしていないような希ガス
0060デフォルトの名無しさん
2009/12/25(金) 19:23:14ちょっと間違えてるくらいが丁度良い
006153
2009/12/25(金) 20:24:29感謝です。。
006253
2009/12/25(金) 20:27:25Traceback (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'
こんなエラーがでました。
どうすれば良いでしょうか。
0063デフォルトの名無しさん
2009/12/25(金) 21:33:570064デフォルトの名無しさん
2009/12/25(金) 22:32:31Python 2.2.2
って言われました。
0065デフォルトの名無しさん
2009/12/25(金) 22:54:12os.walkは2.3から
os.listdirでも使って再帰で書く
0066デフォルトの名無しさん
2009/12/25(金) 23:04:24えと・・・最新をDLしてきてインストールすれば
大丈夫でしょうか。
0067デフォルトの名無しさん
2009/12/25(金) 23:09:53それがベスト
0068デフォルトの名無しさん
2009/12/25(金) 23:27:07ありがとうございます。
ご教示に従います。
006968
2009/12/25(金) 23:37:58ありがとうございました。
0070デフォルトの名無しさん
2009/12/28(月) 08:00:42標準入力から入力されたパスを調べて、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
前からみて順に正規表現regex="〜〜"にマッチする文字列を全て"hogehoge"に置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
0071デフォルトの名無しさん
2009/12/28(月) 08:02:24×2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
○2.実在 する ディレクトリでなかったらエラーメッセージを標準出力に出力する。
0072デフォルトの名無しさん
2009/12/28(月) 08:05:23これはユーザにどうやって指定させるんだ
それともスクリプト中に埋め込んでしまっていいのか
というかパスを置換するのはわかったけど
ファイルの中身まで置換するっていうのは本気なのか
0073デフォルトの名無しさん
2009/12/28(月) 08:17:40> これはユーザにどうやって指定させるんだ
ごもっともです。
ちょっと変えて、
setting.iniを読み込んで1行目を
> 標準入力から入力されたパスを調べて、
これに代えて調べるパスとします。
また2行目を
regex="〜〜" #正規表現
3行目を
"hogehoge" #置換後の文字列
として取得するとしてください。
> というかパスを置換するのはわかったけど
> ファイルの中身まで置換するっていうのは本気なのか
本気です。
・・・宿題なものでして。
0074デフォルトの名無しさん
2009/12/28(月) 09:28:50これが分かりません。
> 問 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 はデータを共有していない。タプル形式の要素への代入が禁じられているにも
> かかわらず安全策が採られているのである。何故か? もしも要素の性格に関わらずタプル形
式のデータを共有した場合に、どのような問題が発生するかを具体例で示せ。
ttp://codepad.org/F6w1aRBF
どうしてでしょうか?
問1は
'apple'は書き換え不可能だから共有させても問題ないため
だと思いますが問2が分かりません。
0075デフォルトの名無しさん
2009/12/28(月) 10:02:38a = ('apple', [])
b = ('apple', [])
で考えてみたらいいんじゃないかな
筋の悪い問題なのであまり深く考えないでいいよ
0076デフォルトの名無しさん
2009/12/28(月) 10:05:33> a='apple'
> b='apple'
> print a is b # 1 を出力
これで1になるか0になるかは実装依存
007774
2009/12/28(月) 10:10:06a=('apple',[])
b=('apple',[])
だとすると
a[1]=[2]
は不可能ですが
a[1].append(2)
こんなことは可能だから、ってことですね。
なるほど。
0078デフォルトの名無しさん
2009/12/28(月) 13:52:080079>70
2009/12/29(火) 00:02:10>>70 お願いします。
補正したものは以下です。
########################################################3
Windows XP上で、
まず 同じディレクトリにあるsetting.iniを読み込んで
その1行目, 2行目, 3行目を
文字列p, regex, aftに格納する。
pをパスとして調べ、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
> 前からみて順に正規表現regexにマッチする文字列を全てaftに置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
0080デフォルトの名無しさん
2009/12/29(火) 00:18:180081デフォルトの名無しさん
2009/12/29(火) 08:21:32という感じの一般教養+αな宿題です。
0082デフォルトの名無しさん
2010/01/01(金) 08:57:27すみませんどなたか
>>79
お願いできませんか?
ファイル名はともかく全てのファイルの中身を置換するというところがいまひと
つできなさそうです。
文系なのですが何を間違ったかこんな難しそうな科目を…。
0083デフォルトの名無しさん
2010/01/01(金) 14:36:18import 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")
0085デフォルトの名無しさん
2010/01/17(日) 21:12:41同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
処理の早いものには追加点を与える。
【期限】 1月18日(月) 午後1時
【Ver】 Python 2.6
よろしくおねがいします。
0086デフォルトの名無しさん
2010/01/17(日) 22:43:37A, B が同じ長さのリストと言ってるが、
共通してない要素はソートの結果のどこに入るんだ?
0087デフォルトの名無しさん
2010/01/18(月) 01:08:35問題よくよめ
0088デフォルトの名無しさん
2010/01/18(月) 01:20:420089デフォルトの名無しさん
2010/01/18(月) 13:14:38比較用の値ってなんですか?
あれ、時間切れかな。
0090デフォルトの名無しさん
2010/01/18(月) 17:06:43> 比較用の値ってなんですか?
例えば、[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]
これで理解できなければ
アルゴリズムの教科書をソートキーで引いてくれ。
0092デフォルトの名無しさん
2010/01/27(水) 00:28:55・tkinterをしようしてGUIで操作できるようにする。
・3分、5分、…といくつか選択できるようにする。
スマートなコードを宜しくお願い致します。
0093デフォルトの名無しさん
2010/01/27(水) 00:43:10答えは過去ログでどうぞ
0094デフォルトの名無しさん
2010/01/27(水) 01:46:02import 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()
0095デフォルトの名無しさん
2010/01/27(水) 02:51:47すごい!
ありがとうございます。
参考にして勉強させて頂きます。
ちなみにVBも平行して学習しているんですが(意外といい)
出てくる用語はほぼ同じと考えてもいいですか?
クラスとか、継承とか、オブジェクトとか
0096デフォルトの名無しさん
2010/01/27(水) 03:00:070097デフォルトの名無しさん
2010/01/27(水) 04:10:400098デフォルトの名無しさん
2010/01/29(金) 21:55:33クラスやオブジェクトについてはだいたい一緒じゃね
個人的にVBは戻り値の設定と関数からの脱出が別れてるとこが面白いな
0099デフォルトの名無しさん
2010/01/30(土) 00:11:24さらに戻り値設定し忘れとか起こすしろくなことにならない
言語仕様として糞
0100デフォルトの名無しさん
2010/01/30(土) 00:28:46> 言語仕様として糞
というか言語自体として糞
0101デフォルトの名無しさん
2010/01/30(土) 00:42:080102デフォルトの名無しさん
2010/01/30(土) 00:43:15VB は Linux で動かないもんなぁ
0103デフォルトの名無しさん
2010/01/30(土) 13:48:02Linux で動かないの?
なんつうクソ言語
0104ゆかちん
2010/02/13(土) 22:59:26こんなのやってるんですがヘルプお願いします。
配列作って文字列を入れればいいんでしょうか?
よろしくお願いします。
以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
0105デフォルトの名無しさん
2010/02/13(土) 23:06:52random.randint(0, 4) # 0 から 4 をランダムで返す
考え方はそれであってるからあとはがんばって
0106ゆかちん
2010/02/13(土) 23:20:56乱数のところはわかりました。ありがとうございます!
スキージャンプまでになんとかせねば
0107デフォルトの名無しさん
2010/02/13(土) 23:43:33import random
random.choice(["あいうえお", "かきくけこ", "以下略"])
0108デフォルトの名無しさん
2010/02/14(日) 00:11:455行ならいいが1000行でやろうとするとその方法だと無理
0109デフォルトの名無しさん
2010/02/14(日) 01:03:380110デフォルトの名無しさん
2010/02/14(日) 02:51:13いかにも使い捨てっぽいプログラムに高望みしないの。
エディタに正規表現置換ついてるでしょ。
>>109
with open("hoge.txt") as f:
lines = [line for line in f]
print random.choice(lines)
0111デフォルトの名無しさん
2010/02/14(日) 13:43:290112デフォルトの名無しさん
2010/02/14(日) 13:59:28dictのキーにできる
わからなければリストを使ってれば良い
0113ゆかちん
2010/02/14(日) 15:30:010114デフォルトの名無しさん
2010/02/14(日) 15:33:23if boolean :
〜ここ〜
print 'bbb'
print 'ccc'
上のソースにて、〜ここ〜の部分に何か入れて、
このプログラムを終了してしまいたいのですが、
どうすればいいでしょうか?
booleanがTrueの時にプログラムを終了したいということです。
よろしくお願い申し上げます。
0115デフォルトの名無しさん
2010/02/14(日) 15:35:28すみません。
0116デフォルトの名無しさん
2010/02/14(日) 16:13:40if boolean :
raise Exception
print 'bbb'
print 'ccc'
0118デフォルトの名無しさん
2010/02/14(日) 18:37:050119デフォルトの名無しさん
2010/02/14(日) 23:28:30環境によって適切な終了方法が違う気がするけど
import sys
sys.exit()
が使いやすいと思う。
0120デフォルトの名無しさん
2010/02/15(月) 07:02:06で良いらしい (import sys したくないとき)
0121デフォルトの名無しさん
2010/02/21(日) 11:05:300122デフォルトの名無しさん
2010/02/21(日) 18:55:280123デフォルトの名無しさん
2010/02/24(水) 23:50:040124デフォルトの名無しさん
2010/02/26(金) 14:58:290125デフォルトの名無しさん
2010/02/27(土) 00:46:130126デフォルトの名無しさん
2010/02/27(土) 00:52:060127デフォルトの名無しさん
2010/02/27(土) 14:21:250128デフォルトの名無しさん
2010/02/28(日) 22:05:140129デフォルトの名無しさん
2010/03/01(月) 00:47:560130デフォルトの名無しさん
2010/03/01(月) 00:57:33と思って、 sys.exit() って raise SystemExit なのね。
でもきもちわるい。
ttp://docs.python.org/lib/module-sys.html
0131デフォルトの名無しさん
2010/03/01(月) 08:30:43os._exit(status) もあるよ。
例外を使うのは、 sys.exit() を実行したところからまき戻って
try-finally節で用意されたファイルの削除処理などを実行するため。
それでも気持ち悪い?
0132デフォルトの名無しさん
2010/03/07(日) 21:05:47│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0133デフォルトの名無しさん
2010/03/20(土) 09:55:10http://code.google.com/intl/ja/edu/languages/google-python-class/exercises/basic.html
【 Ver 】2.6ぐらい
【 補足 】手順は次のとおり
1. http://code.google.com/edu/languages/google-python-class/google-python-exercises.zip をダウンロード
2. 解凍してbasic/string1.pyを開く
3. 各関数を完成させたらpython string1.pyで実行、main()に記述してあるテストに通ればOK
一個だけはずかしながら
# A. donuts
# Given an int count of a number of donuts, return a string
# of the form 'Number of donuts: <count>', where <count> is the number
# passed in. However, if the count is 10 or more, then use the word 'many'
# instead of the actual count.
# So donuts(5) returns 'Number of donuts: 5'
# and donuts(23) returns 'Number of donuts: many'
def donuts(count):
# +++your code here+++
if count >= 10:
s = 'many'
else:
s = str(count)
return 'Number of donuts: %s' % s
0134デフォルトの名無しさん
2010/03/20(土) 10:13:34│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0135デフォルトの名無しさん
2010/04/14(水) 22:03:39( ・ω・) �d�d
/ ~つと)
0136デフォルトの名無しさん
2010/05/28(金) 09:41:570137デフォルトの名無しさん
2010/06/20(日) 15:32:10│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0138デフォルトの名無しさん
2010/06/30(水) 15:38:33[2] 問題文:学生の身長、体重のデータを読み込みある学籍番号を入力した
ときにその学生の学籍番号、身長、体重を2分探索法により求め、出力しなさい。
学生のデータは、txtファイルでxx yyy zzという風に記載されています。
(例)出力結果
学生番号:xx
身長:yyy (cm)
体重:zz (kg)
[3] 環境
[3.1] OS:Windows7
[3.2] バージョン: Python3
[3.3] 言語: Python
[4] 期限: 7月1日夕方まで
[5] その他の制限: 多少不恰好でも、分かりやすいプログラムがいいです、、。
よろしくお願いします。
0139デフォルトの名無しさん
2010/06/30(水) 19:14:43[1] 授業単元:プログラミング
[2] 問題文:
二分法による平方根の計算。但し、求めたい平方根(自
然数)を入力できるようにした上で、プログラムの実行時
の計算回数を計算・表示できるように、プログラムを作成
すること。
[3] 環境
[3.1] OS: ChromeOS
[3.2] バージョン: Python3
[3.3] 言語: Python
[4] 期限:7月3日まで
[5] その他の制限:特になし
よろしくお願いします。
0140デフォルトの名無しさん
2010/07/01(木) 21:48:36[1] 授業単元:2分探索法
[2] 問題文: http://uploader.sakura.ne.jp/src/up10962.jpg
[3] 環境
[3.1] OS: MacOSX
[3.2] バージョン:Python3
[3.3] 言語: Python
[4] 7月2日の3時まで
[5] 特になし
リンク先に問題文をおきました。
問題が2つあるので、b1.rb b2.rb というふうにしてください。
よろしくお願いします。
0141デフォルトの名無しさん
2010/07/04(日) 12:24:50> 問題が2つあるので、b1.rb b2.rb というふうにしてください。
> 問題が2つあるので、b1.rb b2.rb というふうにしてください。
0142デフォルトの名無しさん
2010/07/04(日) 12:43:250143デフォルトの名無しさん
2010/07/04(日) 14:09:430144デフォルトの名無しさん
2010/07/04(日) 21:37:00[1] 授業単元:2分探索法
[2] 問題文: http://uploader.sakura.ne.jp/src/up10962.jpg
[3] 環境
[3.1] OS: MacOSX
[3.2] バージョン:Python3
[3.3] 言語: Python
[4] 7月7日の7時まで
[5] 特になし
リンク先に問題文をおきました。
問題が2つあるので、b1.py b2.py というふうにしてください。
よろしくお願いします。
0145デフォルトの名無しさん
2010/07/05(月) 21:03:290146デフォルトの名無しさん
2010/07/08(木) 20:20:34重み付けはRGB値を用いて行い、検出するRGB値の範囲は自由とする。
【 用語 】パーティクルフィルタとは
ttp://www23.atwiki.jp/yahirohumpty/pages/8.html
【 期限 】7/12まで
【 Ver 】Windows XP、Python2.6.5
【 補足 】OpenCVなどライブラリは使用せずにお願いします
0147デフォルトの名無しさん
2010/07/09(金) 00:01:010148146
2010/07/09(金) 09:09:53わがままを言って申し訳ありません
0149デフォルトの名無しさん
2010/07/09(金) 09:45:200150146
2010/07/15(木) 12:40:53ライブラリを使用しても良いと言われました
どなたかよろしくお願いします
0151デフォルトの名無しさん
2010/11/01(月) 14:43:42yukihiro_matz: 英語圏でRubyとPythonを比較する記事を見ることが少なくなってきた
のは、RubyとPythonでクラスタが分離してきたからか。逆に日本語でRubyとPythonを
比較 する記事を見かけるのは国内でのPythonの地位が向上したからか。
∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <こいつ最高にアホだお
\ ` ー'´ //
/ __ /
(___) /
0152デフォルトの名無しさん
2010/11/01(月) 15:08:14∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <こいつ最高にアホだお
\ ` ー'´ //
/ __ /
(___) /
0153デフォルトの名無しさん
2010/11/03(水) 00:27:32∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <このコピペってはやってんの?
\ ` ー'´ //
/ __ /
(___) /
0154デフォルトの名無しさん
2010/11/03(水) 00:35:300155デフォルトの名無しさん
2010/11/10(水) 00:23:110156デフォルトの名無しさん
2010/11/10(水) 08:16:360157デフォルトの名無しさん
2010/11/24(水) 01:28:15あるディレクトリに存在するすべてのファイルについて
各ファイルの先頭一文字をディレクトリ名としてサブディレクトリを作成し
そのサブディレクトリへそのファイルを移動する
(既にサブディレクトリが存在する場合はファイルの移動のみ)
という操作を行うpythonで記述実行し動作を確認しなさい
【 期限 】11月25日13:00まで
【 Ver 】2.5以上 2.6以下
【 補足 】済みません丸投げします
0158デフォルトの名無しさん
2010/11/24(水) 02:09:05日本語含まれてるとかファイル名が1文字のファイルとか.から始まるファイルとかは知らない。
import os
import os.path
import shutils
ARU_DIRECTORY = '/home/aru_user/target'
def make_subdir(dir):
files = os.listdir(dir)
subdirs = list(set([f[0] for f in files]))
for d in subdirs:
os.mkdir(os.path.join(dir, d))
for f in (f for f in files if f[0] == d):
shutils.move(os.path.join(dir, f), os.path.join(dir, d, f))
make_subdir(ARU_DIRECTORY)
0159デフォルトの名無しさん
2010/11/24(水) 02:09:50import os
import os.path
import shutils
ARU_DIRECTORY = '/home/aru_user/target'
def make_subdir(dir):
files = os.listdir(dir)
subdirs = list(set([f[0] for f in files]))
for d in subdirs:
os.mkdir(os.path.join(dir, d))
for f in (f for f in files if f[0] == d):
shutils.move(os.path.join(dir, f), os.path.join(dir, d, f))
make_subdir(ARU_DIRECTORY)
0160デフォルトの名無しさん
2010/11/24(水) 03:14:28ディレクトリにファイルだけじゃなくてサブディレクトリが存在していた場合
その先頭文字でサブディレクトリを作って移動してしまうかもしれない
さらに >>158 さんが指摘しているように
既に一文字の「ファイル」があった場合 mkdir に失敗してファイルに上書きしてしまうかもしれないし
一文字の「サブディレクトリ」があった場合に同じ名前で mkdir してしまうかもしれない
0161デフォルトの名無しさん
2010/11/24(水) 04:02:110162デフォルトの名無しさん
2010/11/24(水) 06:22:420163デフォルトの名無しさん
2010/11/24(水) 07:15:27mkdir()の前にexists()チェックした方が良いと思うけどどう?
0164デフォルトの名無しさん
2010/11/24(水) 11:51:09たしかに。
0165157
2010/11/24(水) 16:20:15あとは自分でなんとかしてみます
0166デフォルトの名無しさん
2010/11/24(水) 16:31:200167デフォルトの名無しさん
2010/11/24(水) 23:32:420168デフォルトの名無しさん
2010/11/24(水) 23:38:11import shutil
import sys
import tempfile
def move_subdir(path):
base = path.decode(sys.getfilesystemencoding())
files = [f for f in os.listdir(base) if os.path.isfile(os.path.join(base, f))]
for f in files:
sub = os.path.join(base, f.lstrip(u'.')[0])
if os.path.isfile(sub):
with tempfile.NamedTemporaryFile(dir=base, delete=False) as tf:
shutil.move(sub, tf.name)
os.mkdir(sub)
shutil.move(tf.name, sub)
os.rename(os.path.join(sub, os.path.basename(tf.name)), os.path.join(sub, f))
else:
os.path.isdir(sub) or os.mkdir(sub)
shutil.move(os.path.join(base, f), sub)
0169デフォルトの名無しさん
2010/11/25(木) 01:27:070170デフォルトの名無しさん
2010/11/25(木) 01:37:080171デフォルトの名無しさん
2010/11/25(木) 12:22:18djangoを使っています。
本番コードにpassが残るのですが,なんとかしてください。
0172デフォルトの名無しさん
2011/01/10(月) 21:15:01ハノイの塔の解法プロセスを表示するプログラム hanoi.py に対して,
ハノイの塔の解法プロセスをイベントに同期してビジュアル表示するGUIをTkinterの適切なウィジェットを利用して実現せよ.
【 期限 】1ヶ月以内
【 Ver 】Python 2.x
【 補足 】丸投げです.よろしくお願いします.
完成イメージ
http://loda.jp/kakifurai/?id=1
hanoi.py
http://loda.jp/kakifurai/?id=2
0173デフォルトの名無しさん
2011/01/11(火) 06:54:24class Hanoi(object):
def __init__(self, height):
self.bars = [range(height, 0, -1), [], []]
self.step = 0
def __repr__(self):
return 'step -> %d\nBAR1: %s\nBAR2: %s\nBAR3: %s' % (
self.step, self.bars[0], self.bars[1], self.bars[2])
def move(self, n, src, dst, work):
''' move n discs from src to dst using work '''
if n == 1: # move sigle disc directly
self.bars[dst].append(self.bars[src].pop())
self.step += 1
print self
else: # move above (n - 1) discs to work, and move n th disc to dst
self.move(n - 1, src, work, dst)
self.move(1, src, dst, work)
self.move(n - 1, work, dst, src)
if __name__ == '__main__':
import sys
try:
height = int(sys.argv[1])
except (IndexError, TypeError, ValueError), e:
height = 3
hanoi = Hanoi(height)
print hanoi
hanoi.move(height, 0, 1, 2)
0174デフォルトの名無しさん
2011/01/11(火) 07:03:320175デフォルトの名無しさん
2011/01/11(火) 07:15:110176デフォルトの名無しさん
2011/01/12(水) 05:46:18簡略版
http://codepad.org/YQed8SIr
クラス化版(微妙...)
http://codepad.org/eyLm0tzd
0177デフォルトの名無しさん
2011/01/12(水) 06:11:47move 2 from A to B
move 1 from A to C
move 3 from A to C
move 1 from A to C
move 2 from A to B
move 1 from A to C
move 4 from A to B
move 1 from A to C
move 2 from A to B
move 1 from A to C
move 3 from A to C
move 1 from A to C
move 2 from A to B
move 1 from A to C
なんか変
0178デフォルトの名無しさん
2011/01/12(水) 07:48:14簡略版は修正前しか保存してなかったみたいだ,すまねぇ
簡略版の修正版
http://codepad.org/wEFpzHfy
0179デフォルトの名無しさん
2011/01/12(水) 07:56:39http://codepad.org/kiaIznYR
0180デフォルトの名無しさん
2011/01/12(水) 08:22:170181デフォルトの名無しさん
2011/01/12(水) 08:58:54http://codepad.org/OtCGyrps
0182デフォルトの名無しさん
2011/01/12(水) 09:22:11修正前
except StopIteration, e:
self.running = False
修正後
except StopIteration, e:
self.running = False
self.kwClock.set('STOP')
にしてください
後者の方が安定します(謎
0183172
2011/01/12(水) 12:00:19こんなにレスもらえるとは思ってませんでした.レスをしてくれた皆さん,ありがとうございました.
作成していただいたプログラム(http://codepad.org/OtCGyrps)はWin7(64bit), Python 2.5.2の環境で正しく動作しました.
どうもありがとうございました.
(ちなみに,Mac OS 10.6, python 2.6.1では動きませんでした.
Tkinterはクロスプラットフォームと思ってましたが,OSに依存するコードもあるのかな?)
これから,皆さんに書いていただいたソースコードを解読していこうと思います.
また機会がありましたら,よろしくお願いします.
0184デフォルトの名無しさん
2011/01/12(水) 16:15:42http://manihoni.blog103.fc2.com/blog-entry-189.html
0185デフォルトの名無しさん
2011/01/12(水) 19:29:280186デフォルトの名無しさん
2011/01/13(木) 16:18:35[1] 授業単元: Pythonプログラミング
[2] 問題文(含コード&リンク):
四則演算をコマンドラインから入力して答えを出せ。
例)keisan.py (4 x (7 + 2) - 20) / 2
答え:8
[3] 環境
[3.1] OS: WindowsXP SP2以上
[3.2] 言語: Python2.x(出来れば2.5あたりでも動くもの)
[4] 期限:2011年1月末
[5] その他:
0187デフォルトの名無しさん
2011/01/13(木) 16:27:50print eval(''.join(sys.argv[1:]).replace('x', '*'))
0188デフォルトの名無しさん
2011/01/13(木) 16:59:44早速の回答ありがとうございます
なんでそうなるのか良くわかりませんが
これから書いていただいたソースコードを解読していこうと思います
また機会がありましたらよろしくお願いします
0189見習い
2011/01/14(金) 14:02:031. 下記のような九九の計算表を出力するプログラムを作成し、実行してください。このときforループを使用するもの(q11.py)と、whileループを使用するもの(q12.py)の2種類を作成してください。
1の段 1 2 3 4 5 6 7 8 9
2の段 2 4 6 8 10 12 14 16 18
..........中略....
9の段 9 18 27 36 45 54 63 72 81
2. 次のような手順で、キーボードから入力した数値の合計を求めるものとします。実際に Python プログラム (q2.py) の形にして、実行してください。
合計に使う変数を 0 にする。
キーボードから数値を入れる。
入力した数値が 0 より大きい間次のブロックを繰り返す:
合計に数値を加える。
キーボードから数値を入れる。
合計を印刷する
3. turtleを使用して、図形を表示するスクリプトg.pyを作成してください。どのような図形を作成するか記述(少なくとも6角形よりは複雑である事)して、スクリプトの内容をメールに含めてください。なお、スクリプトには、必ず for ループを含むようにしてください
0190デフォルトの名無しさん
2011/01/14(金) 14:49:14... print '%dの段' % r,
... for c in xrange(1, 10):
... print r * c,
...
1の段 1 2 3 4 5 6 7 8 9
2の段 2 4 6 8 10 12 14 16 18
3の段 3 6 9 12 15 18 21 24 27
4の段 4 8 12 16 20 24 28 32 36
5の段 5 10 15 20 25 30 35 40 45
6の段 6 12 18 24 30 36 42 48 54
7の段 7 14 21 28 35 42 49 56 63
8の段 8 16 24 32 40 48 56 64 72
9の段 9 18 27 36 45 54 63 72 81
0191デフォルトの名無しさん
2011/01/14(金) 14:50:27for r in xrange(1, 10):
print '%dの段' % r,
for c in xrange(1, 10):
print r * c,
0192デフォルトの名無しさん
2011/01/14(金) 15:10:07# -*- coding: utf-8 -*-
while False:
pass
else:
print reduce(lambda a, b: a + reduce(lambda x, y: u'%s %s' % (x, y * b), xrange(1, 10), u'%dの段' % b) + u'\n', xrange(1, 10), u'')
0193見習い
2011/01/15(土) 12:34:05(1) aを入力する
(2) bを入力する
(3) cを入力する
(4) 判別式D=b*b-4*a*cを計算する。
(5) Dの値に応じて以下の処理を行う。
(5-1) D<0 のとき "実数解はありません"と表示する
(5-2) D=0 のとき 重解を計算して表示する
(5-3) D>0 のとき 2つの解を計算して表示する
実行例
$./q2.py二次方程式ax^2+bx+c=0の係数を入れてくださいa? 1b? 0c? 1実数解はありません$ ./q2.py二次方程式ax^2+bx+c=0の係数を入れてくださいa? 1b? 0c? -1解は 1.0 と -1.0 です
0194デフォルトの名無しさん
2011/01/15(土) 18:01:28整数係数のみ対応
http://codepad.org/iluKMjRR
0195見習い
2011/01/15(土) 23:31:270196デフォルトの名無しさん
2011/01/15(土) 23:53:23[2] 問題文(含コード&リンク):-偏差値と標準偏差の計算-
入力ファイル motofile.dat を事前に用意し、出力ファイル result.dat を
生成する Python ソースプログラム hensa.py を書け。
入力ファイルと出力ファイルは、コマンドライン引数から文字列として取得し、
プログラムでは必ず class を使用すること。
プログラムは以下の形式で実行する。
$ ./hensa.py < motofile.dat > result.dat
生成される result.dat の内容は以下の通りである。
http://codepad.org/8qupROUX
順位4位と順位9位に注意されたい。
[3] 言語:Python 2.5 以上
[4] 期限:2011年01月16日 19:00まで
[5] その他の制限:このプログラムを参考にして下さい。
http://codepad.org/xQ7jLJ15
平均・標準偏差・偏差値の計算式
Wikipedia -偏差値- 数式による解説にある計算式を使って下さい。
平方根の計算には、math.sqrt 関数を使用して下さい。
0197デフォルトの名無しさん
2011/01/16(日) 22:44:46> 2. 次のような手順で、キーボードから入力した数値の合計を求めるものとします。実際に Python プログラム (q2.py) の形にして、実行してください。
> 合計に使う変数を 0 にする。
> キーボードから数値を入れる。
> 入力した数値が 0 より大きい間次のブロックを繰り返す:
> 合計に数値を加える。
> キーボードから数値を入れる。
> 合計を印刷する
import os
sum = 0.0
n = float(raw_input())
while n>0:
sum += n
n = float(raw_input())
os.system("echo %f | lp" % sum) # windowsならos.system("echo %f >PRN" % sum)
0198デフォルトの名無しさん
2011/01/17(月) 01:49:45>>189 の 3. もおながいします。
0199デフォルトの名無しさん
2011/01/17(月) 02:43:58メールの意味が訳わからん
0200デフォルトの名無しさん
2011/01/20(木) 17:18:413. g.py
import turtle
t = turtle.Turtle()
t.width(15)
t.color(240/256.0, 192/256.0, 32/256.0)
a = [(-14, 30), (24, 9), (-16, 6), (10, 6), (2, 4), (-14, 8), (17, 6),
(33, 2), (33, 2), (32, 1), (32, 1), (32, 1), (32, 4), (33, 4), (32, 2),
(32, 2), (32, 2), (-1, 2), (1, 4), (2, 5), (-15, 7), (30, 6), (-13, 3),
(13, 7), (33, 2), (33, 2), (-12, 2), (4, 8), (-16, 5), (10, 7), (33, 2),
(32, 1), (32, 1), (32, 1), (32, 2), (32, 2), (33, 3), (32, 3), (32, 2),
(32, 2), (-19, 7), (27, 2), (-27, 8), (2, 4), (2, 4), (-14, 8), (17, 6),
(33, 2), (33, 2), (32, 1), (32, 1), (32, 1), (32, 4), (33, 4), (32, 2),
(32, 2), (32, 2)]
for d in a:
(p, q) = (t.down, d[0]) if d[0] > 0 else (t.up, -d[0])
p(); t.left(q * 10); t.forward(d[1] * 10)
0201見習い
2011/01/24(月) 15:47:12(q1.py という名前で作成)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
fortune = {
'いちご': '幸運が訪れます',
'みかん': '努力が必要です',
'りんご': '我慢が必要です'
}
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
ヒント
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
#fortune.datからディクショナリを読み込むようにここに数行追加。
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
0202デフォルトの名無しさん
2011/01/24(月) 17:55:12# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
with open("fortune.dat", "r") as f: fortune = eval(f.read())# からディクショナリを読み込むようにここに数行追加。
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
0203まるっきりの初心者。
2011/01/24(月) 20:44:42import sys,math,random,time
#function for move
def moveX( dx ):
global cbx,current,colorpat
if current < 0: return
if(cbx == 9 and dx == 1) or (cbx == 0 and dx == -1 ):return
cbx = cbx + dx
position = colorpat[current].getPosition()
pos = osg.Vec3d(cbx,position.y(),position.z())
colorpat[current].setPosition( pos )
def moveY( dy ):
global cby,current,colorpat
if current < 0: return
if(cby == 9 and dy == 1) or (cby == 0 and dy == -1 ):return
cby = cby + dy
position = colorpat[current].getPosition()
pos = osg.Vec3d(position.x(),cby,position.z())
colorpat[current].setPosition( pos )
def speedFall():
for i in range(3):
if(fallBox() == False):
createNewBox(root)
break
0204まるっきりの初心者。
2011/01/24(月) 20:46:23class KeyboardHandler(osgGA.GUIEventHandler):
def __init__(self):
osgGA.GUIEventHandler.__init__(self)
def handle(self,ea,aa,obj,nv):
vwr = osgViewer.GUIActionAdapterToViewer(aa)
if not vwr:return False
eventtype = ea.getEventType()
if eventtype == ea.KEYDOWN:
if ea.getKey() == ea.KEY_Right:
moveX( 1 )
return True
elif ea.getKey() == ea.KEY_Left:
moveX( -1 )
return True
elif ea.getKey() == ea.KEY_Up:
moveY( 1 )
return True
elif ea.getKey() == ea.KEY_Down:
moveY( -1 )
return True
elif ea.getKey() == ea.KEY_Space:
speedFall()
return True
return False
0205まるっきりの初心者。
2011/01/24(月) 20:47:09def createFrame( root ):
for i in range( 8 ):
if(i % 2 == 0): x,bx = 5,10
elif((i-1)%4==0): x,bx = -0.25,0.5
else: x,bx =10.25,0.5
if(i%2 == 1):y,by = 5,10
elif(i%4 == 0):y,by = -0.25,0.5
else:y,by = 10.25,0.5
if(i<4):z,bz = 0,0.5
else:z,bz = 20,0.5
box = osg.Box(osg.Vec3(x,y,z),bx,by,bz)
bb = osg.ShapeDrawable( box )
bb.setColor(osg.Vec4(0.5,0.5,0.5,0.1))
gg = osg.Geode()
gg.addDrawable( bb )
root.addChild( gg )
cbx = -1
cby = -1
cbz = -1
stack = [[]]
for x in range(10):
stack.append([])
for y in range(10):
stack[x].append(0)
0206まるっきりの初心者。
2011/01/24(月) 20:47:49def shiftingPlane():
global current,stack
satisfied = True
for i in range(100):
if( satisfied and stack[i / 10][i % 10]< 1 ):
satisfied = False
break
if ( satisfied ):
for x in range(10):
for y in range(10):
stack[x][y] = stack[x][y]-1
for i in range( current ):
position = colorpat[i].getPosition()
z = position.z()-1
pos = osg.Vec3d(position.x(),position.y(), z)
colorpat[i].setPosition( pos )
0207見習い
2011/01/29(土) 13:26:55(1) xを1.とする。
(2)次の過程を無限ループで繰り返す 。
(2.1)sin(x)/xを計算してyに代入する。
(2.2)xとy(sin(x)/x)の値を表示する。
(2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
(2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は***です”というメッセージを示して、プログラムを終了する。
実行例
./kinji.py
sin(x)/x=0.9の近似解を求めます
x=0.99 sin(x)/x=0.844470685455
x=0.98 sin(x)/x= 0.84744629642
中略 .......
x=*** sin(x)/x=**************
近似解が見つかりました。解は***です。
(ヒント:ループから抜けるbreak)
0208デフォルトの名無しさん
2011/01/29(土) 14:44:52手続き型言語なんだから、手続きが書いてある場合は、書いてある通りにとりあえず書いてみろ。
import sys
import math
# (1) xを1.とする。
x = 1.
# (2)次の過程を無限ループで繰り返す 。
while True:
# (2.1)sin(x)/xを計算してyに代入する。
y = math.sin(x)/x
# (2.2)xとy(sin(x)/x)の値を表示する。
print x, y
# (2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
if y <= 0.90:
x -= 0.01
continue
# (2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は***です”というメッセージを示して、プログラムを終了する。
if y >= 0.90:
print "近似解がみつかりました。解は%fです" % x
sys.exit()
さて。書き方が不自然になったが、あえて、問題文の通りの手順でやってみた。
もしbreakを使わないといけないのだったら、使うように自分で改造してくれ。
0209見習い
2011/01/29(土) 15:30:57実行例 (python interactive mode)
>>> imort q1
>>> q1.carea(3)
28.274333882308138
2.r! (1x2x.......r) を計算してその値を戻す関数kaijo(r)をモジュール q2.pyに作成して、インタラクティブモードで正しく動作することを確認しなさい。解答には,q2.pyの中身と実行結果を含めてください。
実行例 (python interactive mode)
>>> imort q2
>>> q2.kaijo(4)
>>>24
3. 2で作成したkaijo(r)を利用して,nCr(注1)を計算する"スクリプト"cmb.pyを作成しなさい。nとrは下記のように、スクリプトの引数で指定するようにしてください。
また, r>nが入力された場合には下記のようなエラーメッセージが出るようにしてください。
入力値が不正です.
用法: cmp.py n r(nCr、n>=r)”
解答には,cmb.pyの中身と実行結果を含めてください。
実行例
% chmod +x cmp.py
% ./cmp.py 6 2
6C2=15
% ./cmp.py 4 5
入力値が不正です.
用法: cmp.py n r(nCr、n>=r) ヒント:nCr=n!/(r!・(n-r)!)
0210デフォルトの名無しさん
2011/01/29(土) 20:56:230211デフォルトの名無しさん
2011/01/29(土) 21:08:491.
carea = lambda r: __import__('math').pi * r ** 2
2.
kaijo = lambda r: (lambda f, n: f(f, n))((lambda f, n: n * f(f, n-1) if n > 0 else 1), r)
3.
import sys
import q2
print (lambda n, r: '入力値が不正です.' if n < r else q2.kaijo(n)/q2.kaijo(r))(*sys.argv[1:3])
0212デフォルトの名無しさん
2011/01/29(土) 21:31:240213デフォルトの名無しさん
2011/01/30(日) 05:01:33コマンドラインで指定したディレクトリ(例: c:\test)について、
各サブディレクトリ毎のファイル数、ファイルサイズ(バイト単位)等を
下記(例)の様な書式でレポート出力するプログラム(s31.py)を作成する。
出力内容は次の通り。
dir はサブディレクトリ名 (ネストに対応すると得点up。その場合の書式拡張は各自考察せよ。)
files はファイル数 (ディレクトリは数えない)
dirsize は上記ファイル数のファイルサイズの合計
maxsize は上記ファイル数の中で最大のファイルのサイズ (ファイル名を行末に表記しても良い。)
ave は dirsize / files を小数点第1位まで表示
※出力例は等幅フォントです。
【 期限 】2011/01/31 15:00 まで
【 Ver 】Windows XP, Vista, 7 / Python 2.5
【 補足 】丸投げです。おながいします。
(例)
C:\Documents and Settings\Administrator>s31.py c:\test
dir: files dirsize maxsize ave
-: 1 287581 287581 287581.0
0: 33 2010948 231763 60937.8
1: 1683 376414953 1410886 223657.1
...
(略)
...
y: 3 233678 95453 77892.7
z: 12 1259272 236288 104939.3
total = 11336
0214213
2011/01/30(日) 05:05:41出力例がずれているのですが、
html ソースを見ると空白が入っているので
恐れ入りますが空白数はそちらを参照してください。
0215デフォルトの名無しさん
2011/01/30(日) 05:21:43ディレクトリ階層全体のサイズも気にしなくていいのか?
それからtotalって何の合計?
0216デフォルトの名無しさん
2011/02/03(木) 23:33:36Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
0217デフォルトの名無しさん
2011/02/03(木) 23:51:470218デフォルトの名無しさん
2011/02/04(金) 01:13:280219デフォルトの名無しさん
2011/02/06(日) 01:35:450220デフォルトの名無しさん
2011/02/06(日) 04:07:470221デフォルトの名無しさん
2011/02/09(水) 03:08:02http://twitter.com/MASA_37/status/8040170771185664
0222デフォルトの名無しさん
2011/02/09(水) 08:51:54nを2以上の自然数とし、以下の操作を考える。
(i)nが偶数ならば、nを2で割る。
(ii)nが奇数ならば、nを3倍して1を加える。
与えられた2以上の自然数にこの操作を行い、得られた自然数が1でなければ、
得られた自然数にこの操作を繰り返す。2以上10の5乗以下の自然数から始めると、
この操作を何回か繰り返すことで必ず1が得られることが確かめられている。
たとえば、10から始めると
10→5→16→8→4→2→1
である。ただし、a→bは1回の操作で自然数aから自然数bが得られたことを意味する。
Nを2以上10の5乗以下の自然数とするとき、F(N)をNから始めて1が得られるまでの
上記の操作の回数と定義する。また、F(1)=0とおく。たとえば、上の例から、
F(10)=6である。
(1)F(6)=「ア」、F(11)=「イウ」である。
(2)10の5乗以下の自然数Nについて、F(N)を求めるため、次のような「プログラム」を作った。
ただし、INT(X)はXを超えない最大の整数を表す関数である。
「プログラム」
100 INPUT N
110 LET I=N
120 LET C=0
130 IF I=1 THEN GOTO 「エ」
140 IF INT(I/2)*2=I THEN
150 「オ」
160 GOTO 190
170 END IF
180 LET I=3*I+1
190 「カ」
200 「キ」
210 PRINT "F(";N;")=";C
220 END
0223デフォルトの名無しさん
2011/02/09(水) 08:52:400. 130 1. 140 2. 150 3. 190 4. 200 5. 210
「オ」、「カ」、「キ」に当てはまるものを、次の0〜8のうちから一つ選べ。
0. LET C=1 1. GOTO 130 2. GOTO 140
3. GOTO 210 4. LET C=C+1 5. LET I=I+1
6. LET I=I/2 7. NEXT N 8. LET I=2*I+1
「プログラム」を実行して、Nに24を入力すると、180行は「ク」回実行される。
(3)Mを10の5乗以下の自然数とする。(2)で作成した「プログラム」を変更して、
M以下の自然数Nのうち、F(N)<=10となるすべてのNについて、F(N)の値を
出力するプログラムを作成する。そのために、まず、「プログラム」の100行を
次の二つの行で置き換える。
100 INPUT M
101 FOR N=1 TO M
さらに、210行を次の二つの行で置き換える。
210 IF 「ケ」 THEN PRINT "F(";N;")=";C
211 「コ」
「ケ」に当てはまるものを、次の0〜5のうちから一つ選べ。
0. INT(I/2)=I 1. C>10 2. M>=C
3. N=I 4. C<=10 5. I=N
「コ」に当てはまるものを、次の0〜5のうちから一つ選べ。
0. LET M=M+1 1. GOTO 120 2. NEXT M
3. NEXT N 4. LET C=C+1 5. NEXT I
変更後のプログラムを実行して、Mに10を入力すると、210行のPRINT文は
「サ」回実行される。
pythonで解いてみてくだされ
0224デフォルトの名無しさん
2011/02/10(木) 20:13:390225デフォルトの名無しさん
2011/02/10(木) 21:58:26ただしループが何回回るかも知りたいです
0226デフォルトの名無しさん
2011/02/13(日) 15:50:27n = int(raw_input())
i = n
c = 0
while i != 1:
c += 1
i = 3*i+1 if i%2 else i/2
print 'F(', n, ') =', c
>>223のループ追加するとかそういうのは面倒だから自分でやれ
0227デフォルトの名無しさん
2011/02/14(月) 05:56:140228デフォルトの名無しさん
2011/02/14(月) 06:46:360229デフォルトの名無しさん
2011/02/17(木) 02:08:54http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%202
フィボナッチ数列の項は前の2つの項の和である。最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
0230デフォルトの名無しさん
2011/02/17(木) 02:20:00x, y = 1, 2
sum_ = 0
while x < 400 * 1000:
if x % 2 == 0: sum += x
x, y = y, x+y
print sum_
def fib(stop):
x, y = 1, 2
while x <= stop:
yield x
x, y = y, x+y
print sum(x for x in fib(400 * 1000) if x % 2 == 0)
0231デフォルトの名無しさん
2011/02/17(木) 03:05:51答えは257114ですか?
入力したら間違ってるて言われた・・・
0232デフォルトの名無しさん
2011/02/17(木) 03:14:27400 * 10000
0233デフォルトの名無しさん
2011/02/17(木) 03:17:19気付かなかった
0234デフォルトの名無しさん
2011/02/18(金) 14:42:07>>200
エディタを作ったのでどうぞ
ttp://www5.puny.jp/uploader/download/1298007172.zip
0235デフォルトの名無しさん
2011/02/18(金) 14:43:53turtle
です
0236デフォルトの名無しさん
2011/02/19(土) 23:21:19.920237デフォルトの名無しさん
2011/02/20(日) 07:21:55.93真面目に「リンク」を辿りたいならhtmlparserを使うべきだろ。
素のテキストやコメントに書かれたURLを追っかけていっちゃってもいいというやっつけ仕様なら正規表現もアリだが。
0238デフォルトの名無しさん
2011/02/20(日) 19:51:45.980239デフォルトの名無しさん
2011/02/21(月) 18:15:28.88ありがとうございました。
htmlparser使うようにします。
0240デフォルトの名無しさん
2011/02/21(月) 19:08:05.820241デフォルトの名無しさん
2011/02/22(火) 02:13:32.37会社にそういったプログラムを仕事で書いてる人がいるけど
真面目に頑張るとかなり苦労するよーw
0242デフォルトの名無しさん
2011/02/22(火) 21:29:41.55htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
0243デフォルトの名無しさん
2011/02/22(火) 21:39:40.080244デフォルトの名無しさん
2011/02/24(木) 16:49:31.840245デフォルトの名無しさん
2011/02/26(土) 22:27:24.990246デフォルトの名無しさん
2011/03/01(火) 01:26:57.10以下のページにあるPythonのコードを実行してウインドウを表示させよ。
http://www.not-enough.org/abe/manual/program-aa08/pyopengl1.html
【 Ver 】Python2.7.1 OS・・・windows7-64bit、開発環境Eclipse,PyDev
【 補足 】
↓Eclipse上で実行してみると、以下のようなエラーが出たため
Traceback (most recent call last):
File "C:\Users\username\workspace\PyOpenGL\src\PyOpenGL1.py", line 3, in <module>
from OpenGL.GL import *
ImportError: No module named OpenGL.GL
↓PyOpenGLというのをDLしてみました。
http://pyopengl.sourceforge.net/
モジュール?DLしたからには、Pythonのフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
0247デフォルトの名無しさん
2011/03/01(火) 01:40:52.05ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ
それが回文数になるまで同じ操作を繰り返したとき
最も回文数になりにくい 3桁の数を見つけてください
【 Ver 】Python2.x
【 補足 】
回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです
なお 2桁の場合は 89, 98 が最大で 24回だそうです
0248デフォルトの名無しさん
2011/03/01(火) 17:39:09.29しょーがねぇ、俺がとっておきを披露してやろう。
#! /usr/bin/python
open("hello.c", "w").write('''
#include <stdio.h>
int main(void)
{
printf("hello, world.\n");
return 0;
}
''')
os.system('gcc -o hello hello.c')
os.system('./hello')
raise SystemExit
0249デフォルトの名無しさん
2011/03/01(火) 23:39:48.440250デフォルトの名無しさん
2011/03/02(水) 00:30:45.95def reversed_num(n):
x = 0
while n > 0:
n, m = divmod(n, 10)
x = x * 10 + m
return x
def solve(n):
i = 0
nn = n
rn = reversed_num(nn)
while True:
if nn == rn: break
i += 1
nn = nn + rn
rn = reversed_num(nn)
print n, i, nn
for n in range(100, 1000):
solve(n)
馬鹿正直なコードを書いてみたけど、下から試すと196、上から試すと986で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
0251デフォルトの名無しさん
2011/03/02(水) 01:13:16.28def reversed_num(n):
return int(str(n)[::-1])
にしたら少しは速くなるかもしれないけど、もっと根本的な枝刈りが必要だね。
0252デフォルトの名無しさん
2011/03/02(水) 02:04:24.48以下のコードを書いたのですが、タプルを返してるつもりが、
19をはじめ、ところどころNoneで返ってきてしまいます。
returnするまではtupleなのですが、returnするとNoneになるようです。
すみませんが、なぜか教えていただけますでしょうか。
def f(x, count):
y = int(str(x)[::-1])
z = x + y
if z == int(str(z)[::-1]) :
return (z, count)
else :
f(z, count + 1)
if __name__ == '__main__' :
for i in range(10, 99) :
print type(f(i, 1))
0253デフォルトの名無しさん
2011/03/02(水) 02:08:52.72else: の後をよく見てみよう。
0254デフォルトの名無しさん
2011/03/02(水) 02:12:23.220255デフォルトの名無しさん
2011/03/04(金) 18:30:06.950256デフォルトの名無しさん
2011/03/05(土) 21:50:19.020257デフォルトの名無しさん
2011/03/06(日) 18:48:07.22「1の位が0」「1と10の位が0」の数についてはどう扱うべきなのかな?
たとえば100をひっくり返すと001だけど。
0258デフォルトの名無しさん
2011/03/06(日) 19:04:24.47001は3桁の数ではなく1桁の数とする。
が普通だろう。
0259デフォルトの名無しさん
2011/03/06(日) 20:04:42.97であれば、ひっくり返した数が100未満ならその時点で除外できなくね?
0260デフォルトの名無しさん
2011/03/06(日) 20:38:31.99そう思う。
0261デフォルトの名無しさん
2011/03/07(月) 08:19:40.19http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E3%81%AE%E5%95%8F%E9%A1%8C
0262デフォルトの名無しさん
2011/03/07(月) 08:22:53.77101〜999までの間に
ひっくり返したら
3桁じゃなくなる数って
そんなに多くないぞ
0263デフォルトの名無しさん
2011/03/07(月) 14:06:29.17295
394
493
592
689
691
788
790
879
887
978
986
さぁどれだ
0264デフォルトの名無しさん
2011/03/07(月) 16:12:10.530265デフォルトの名無しさん
2011/03/08(火) 02:39:40.590266デフォルトの名無しさん
2011/03/08(火) 03:04:11.210267デフォルトの名無しさん
2011/03/08(火) 09:16:55.890268デフォルトの名無しさん
2011/04/25(月) 20:07:16.29それらがすべて、永遠に回文数にならないので解ではないなら、
23回 187 286 385 583 682 781 880
が解。特徴的。この数字はどれも、1回の操作で968になる。
>>263を、この特徴に合わせて分けると
a) 196 295 394 493 592 691 790
b) 689 788 887 986
c) 879 978
このうち、少なくともbは解じゃない。aを1回操作すると788になるから、aの方がbより1回多い。
……ここまでしか分からんかった。
0269268
2011/04/25(月) 20:08:36.16正 aを1回操作すると887になるから
0270デフォルトの名無しさん
2011/04/26(火) 01:30:26.68でぐぐったら、結構出てくるなぁ。
0271デフォルトの名無しさん
2011/04/27(水) 17:55:15.88少なくとも判定は出来ると思う
3桁の数なら
「回文数になる」
「回文数になる前に(おおざっぱに)1000個の数字がすべて出てくる」
「1000個出てこなくてもどこかで同じ数字が出てきて循環する」
のどれかになるんじゃないかな
0272デフォルトの名無しさん
2011/04/27(水) 19:16:53.31余りをとったり、しないんだよね。
そしたら、足すたびに数字は増えるので循環とか数字全部出るとかはありえないよ。
0273デフォルトの名無しさん
2011/04/27(水) 20:12:16.88うは
ごめん
素で勘違いしてたわ
0274デフォルトの名無しさん
2011/04/28(木) 01:13:33.280275デフォルトの名無しさん
2011/04/28(木) 01:21:22.71世の中には、勘違いしてても気づかない奴もいるって事よ。
0276デフォルトの名無しさん
2011/04/29(金) 20:53:12.21与えられた値を2つの素数の和で現してください
verは出来れば2.6で
エラトステネスのふるいを用いた素数リストを使って値を出すようにしてください
お願いします
0277デフォルトの名無しさん
2011/04/30(土) 00:48:17.11n = int(raw_input())
def get_primes(n):
ary = [0 for i in range(n+1)]
primes = []
i = 2
while i <= n:
if not ary[i]:
primes.append(i)
j = i
while j <= n:
ary[j] = 1
j += i
i += 1
return primes
primes = get_primes(n)
for p in primes:
if n - p in primes:
print p, n - p
0278デフォルトの名無しさん
2011/04/30(土) 06:55:17.50ありがとうございます
0279デフォルトの名無しさん
2011/06/02(木) 06:22:08.840280デフォルトの名無しさん
2011/06/02(木) 17:55:17.030281デフォルトの名無しさん
2011/06/14(火) 19:57:57.72Perl版の奴をPythonに移植したいんのですが、データ構造をどう実装すれば
いいのかよくわかりません。
英文を読み込んで、単語1、単語2という組み合わせを読み込み、その後に
付く単語をsuffixとして記憶する(複数の場合にはチェインする)というもの
です。
読み込み部分のソースはこんな感じです。
>$NONWORD = "\n";
>$w1 = $w2 = $NONWORD; #initial state
>while (<>) { # read each line of input
> foreach (split) {
> push(@{$statetab{$w1}{$w2}}, $_);
> ($w1, $w2) = ($w2, $_); #multiple assignment
> }
>}
push(@{$statetab{$w1}{$w2}}, $NONWORD); # add tail
たとえばRubyに移植するとこんな感じになると思います。
>statetab = Hash.new{|h,k| h[k] = Hash.new{|h2,k2| h2[k2]= []}}
中略
> statetab[w1][w2].push(word)
Pythonでもこういうハッシュ+リストみたいなのを実現するにはどうやれば
いいでしょうか?
0282デフォルトの名無しさん
2011/06/14(火) 20:37:04.18In [1]: from collections import defaultdict
In [2]: d = defaultdict(lambda: defaultdict(list))
In [3]: d['w']['x'].append('z')
In [4]: d
Out[4]: defaultdict(<function <lambda> at 0x12c7488>, {'w': defaultdict(<type 'list'>, {'x': ['z']})})
statetab[(w1, w2)] みたいに、1階層で単語のタプルをキーにすることもできるね。
0283デフォルトの名無しさん
2011/06/14(火) 21:16:40.59サンクス。
そっかタプルってキーにできるんですね。それがわかり易そうだなあ。
lambdaはよくわからないので・・・。
0284デフォルトの名無しさん
2011/08/01(月) 21:52:27.42しかし、lines.sort(cmp=lambda 〜 の 行の意味が解かりません。
lambda式がcmpに代入されている意味。
後半に出てくるcmpと先頭のcmpは、同じcmp関数?
コラム指定された部分がx,yに代入されて比較されている、と思うのですが、
これをsortに渡すとファイル全体がソートされる動作が想像できません。
解説をお願いいたします。
# filesort.py
# coding:shift_jis
# ファイルのSORT
import string
import time
from datetime import datetime
startTime = time.clock()
print datetime.today().strftime("%Y年%m月%d日 %H時%M時%S秒 処理開始")
fr = open("C:/in.txt", "r") # 入力ファイル
fw = open("C:/out.txt", "w") # 出力ファイル
lines = fr.readlines()
cnt = len(lines)
# SORT ソート位置を変更するときは下記行を修正。
# ソートキーは複数指定していて、11カラムから5桁と1カラムから9桁です。
lines.sort(cmp=lambda x,y: cmp(str(x)[10:15]+str(x)[0:9], str(y)[10:15]+str(y)[0:9]))
fw.writelines(lines)
fr.close()
fw.close()
# 終了メッセージ
print datetime.today().strftime("%Y年%m月%d日 %H時%M時%S秒 処理終了")
print cnt, '件を', time.clock() - startTime, '秒で処理しました。'
print '何かキーを押せば終了します。'
raw_input()
0285デフォルトの名無しさん
2011/08/01(月) 22:01:30.90名前付き引数
0286デフォルトの名無しさん
2011/08/03(水) 18:11:59.06先のcmpはsort()の名前付き引数、後のcmpはcmp関数、という事は解かりました。
ですが、やはり、ファイル全体がソートされる動作が想像できません。
0287デフォルトの名無しさん
2011/08/03(水) 18:13:27.100288デフォルトの名無しさん
2011/08/03(水) 19:31:32.770289デフォルトの名無しさん
2011/08/03(水) 21:03:18.52sort()の中でリストの要素同士の大小比較をするときに、cmp引数で指定された比較関数を呼び出して
比較しているから、cmp引数でソートの挙動をカスタマイズできるんだよ。
文字列全体じゃなくて一部分だけを比較のキーにする、みたいに。
ちなみにcmp引数に何も指定しないと、要素そのものをキーとして組み込み関数のcmp関数を呼ぶ。
0290289
2011/08/03(水) 21:07:06.99sort()にkey引数ってのが導入されて、リストの要素からソートキーを得る関数を指定できる。
もちろん、指摘しなければリストの要素がそのままソートキーになるんだけど。
つまり>>286と全く同じことを
lines.sort(key = lambda x: x[10:15] + x[0:9])
と書ける。
0291286
2011/08/04(木) 17:36:23.52>>290
ありがとうございます。
>lines.sort(key = lambda x: x[10:15] + x[0:9])
こちらはソートのキー指定をしている事が、直感的に納得できました。こちらを使います。
0292デフォルトの名無しさん
2011/10/04(火) 08:58:36.280293デフォルトの名無しさん
2011/11/03(木) 17:32:29.90C:\Users\workspace\pythonというディレクトリの中に
下の画像のように、pythonファイルとテキストファイルが存在するとします。
�@http://up3.viploader.net/ippan/src/vlippan243126.jpg(Python実行前)
【それぞれのテキストファイルの中には、変数にpathを代入するような記述が書いてあります
必ずしも、1行目と2行目にpath1,path2の変数があるとは限りません。】
�Ahttp://viploader.net/ippan/src/vlippan243130.jpg(Python実行後)
pythonファイルを実行すると、
pythonがあるディレクトリと同ディレクトリの全てのテキスト形式ファイル(test1.test2,test3,test4)内にある
path1、path2に格納されている文字列を画像�Aのように置き換えたいです。
0294デフォルトの名無しさん
2011/11/03(木) 19:13:43.01with open('test{}.txt'.format(i), 'r+') as fp:
d = fp.read().replace(r'C:\aaa\aaa\aaa\aaa', r'C:\Users\workspace\python').replace(r'C:\iii\iii\iii\iii', r'C:\Users\workspace')
fp.seek(0, 0)
fp.truncate()
fp.write(d)
0295デフォルトの名無しさん
2011/11/04(金) 10:29:57.940296デフォルトの名無しさん
2011/11/04(金) 10:58:40.790297デフォルトの名無しさん
2011/11/04(金) 12:17:32.010298デフォルトの名無しさん
2011/11/04(金) 12:48:15.42何がしたいのか判らん
0299デフォルトの名無しさん
2011/11/17(木) 23:36:18.410300299
2011/11/17(木) 23:40:57.760301デフォルトの名無しさん
2011/11/17(木) 23:44:37.820302デフォルトの名無しさん
2011/11/17(木) 23:59:11.850303デフォルトの名無しさん
2011/11/18(金) 00:09:05.170304299
2011/11/18(金) 00:14:14.86r = 1
while r < 11:
cl = []
for x in range(len(a)):
for y in range(len(a[0])):
a[x][y] = a[x][y] + 1
for x in range(len(a)):
for y in range(len(a[0])+1):
cl.append(a[x][0:y] + [0] + a[x][y:len(a)])
初めて書いたコードが動いただけで満足してたんですが2行で済んでしまうとは驚きです。また勉強します。ありがとうございます
0305デフォルトの名無しさん
2011/11/18(金) 06:42:14.780306デフォルトの名無しさん
2011/11/18(金) 23:51:58.320307デフォルトの名無しさん
2011/11/19(土) 10:46:00.70tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけどWEB業界で有名らしいね
動画ありませんか?
■ このスレッドは過去ログ倉庫に格納されています