【Pythonスレッド基本ルール】
1:問題文は自己省略せずに、直接全部貼り付けてください。
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/
探検
Python の宿題ここで答えます Part 2
■ このスレッドは過去ログ倉庫に格納されています
2009/11/16(月) 06:27:36
156デフォルトの名無しさん
2010/11/10(水) 08:16:36 えっ?
157デフォルトの名無しさん
2010/11/24(水) 01:28:15 【 課題 】
あるディレクトリに存在するすべてのファイルについて
各ファイルの先頭一文字をディレクトリ名としてサブディレクトリを作成し
そのサブディレクトリへそのファイルを移動する
(既にサブディレクトリが存在する場合はファイルの移動のみ)
という操作を行うpythonで記述実行し動作を確認しなさい
【 期限 】11月25日13:00まで
【 Ver 】2.5以上 2.6以下
【 補足 】済みません丸投げします
あるディレクトリに存在するすべてのファイルについて
各ファイルの先頭一文字をディレクトリ名としてサブディレクトリを作成し
そのサブディレクトリへそのファイルを移動する
(既にサブディレクトリが存在する場合はファイルの移動のみ)
という操作を行うpythonで記述実行し動作を確認しなさい
【 期限 】11月25日13:00まで
【 Ver 】2.5以上 2.6以下
【 補足 】済みません丸投げします
158デフォルトの名無しさん
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)
日本語含まれてるとかファイル名が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)
159デフォルトの名無しさん
2010/11/24(水) 02:09:50 ごめん、インデントとんでしもた
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)
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)
160デフォルトの名無しさん
2010/11/24(水) 03:14:28 微妙に引っかかるポイントがあるね
ディレクトリにファイルだけじゃなくてサブディレクトリが存在していた場合
その先頭文字でサブディレクトリを作って移動してしまうかもしれない
さらに >>158 さんが指摘しているように
既に一文字の「ファイル」があった場合 mkdir に失敗してファイルに上書きしてしまうかもしれないし
一文字の「サブディレクトリ」があった場合に同じ名前で mkdir してしまうかもしれない
ディレクトリにファイルだけじゃなくてサブディレクトリが存在していた場合
その先頭文字でサブディレクトリを作って移動してしまうかもしれない
さらに >>158 さんが指摘しているように
既に一文字の「ファイル」があった場合 mkdir に失敗してファイルに上書きしてしまうかもしれないし
一文字の「サブディレクトリ」があった場合に同じ名前で mkdir してしまうかもしれない
161デフォルトの名無しさん
2010/11/24(水) 04:02:11 大文字小文字は区別すんのかな?
162デフォルトの名無しさん
2010/11/24(水) 06:22:42 大文字小文字を区別しない変態環境なんて・・・
163デフォルトの名無しさん
2010/11/24(水) 07:15:27 >>158-159
mkdir()の前にexists()チェックした方が良いと思うけどどう?
mkdir()の前にexists()チェックした方が良いと思うけどどう?
164デフォルトの名無しさん
2010/11/24(水) 11:51:09 >>163
たしかに。
たしかに。
165157
2010/11/24(水) 16:20:15 みなさんありがとうございました
あとは自分でなんとかしてみます
あとは自分でなんとかしてみます
166デフォルトの名無しさん
2010/11/24(水) 16:31:20 一文字のファイルがあった場合が面倒だな
167デフォルトの名無しさん
2010/11/24(水) 23:32:42 テンポラリなディレクトリ作って、取りあえずそこに突っ込んでからリネームすればいいんでないの
168デフォルトの名無しさん
2010/11/24(水) 23:38:11 import os
import 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)
import 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)
169デフォルトの名無しさん
2010/11/25(木) 01:27:07 f.lstrip(u'.')[0] って f[0] でいいような希ガス
170デフォルトの名無しさん
2010/11/25(木) 01:37:08 っていうか普通にバグってるなこれ
171デフォルトの名無しさん
2010/11/25(木) 12:22:18172デフォルトの名無しさん
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
ハノイの塔の解法プロセスを表示するプログラム hanoi.py に対して,
ハノイの塔の解法プロセスをイベントに同期してビジュアル表示するGUIをTkinterの適切なウィジェットを利用して実現せよ.
【 期限 】1ヶ月以内
【 Ver 】Python 2.x
【 補足 】丸投げです.よろしくお願いします.
完成イメージ
http://loda.jp/kakifurai/?id=1
hanoi.py
http://loda.jp/kakifurai/?id=2
173デフォルトの名無しさん
2011/01/11(火) 06:54:24 例(hanoi.py)のソースが下手すぎなので治してあげたよ
class 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)
class 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)
174デフォルトの名無しさん
2011/01/11(火) 07:03:32 なんかかなり酷くなったような…
175デフォルトの名無しさん
2011/01/11(火) 07:15:11 dohanoiよりは好きだな
176デフォルトの名無しさん
2011/01/12(水) 05:46:18177デフォルトの名無しさん
2011/01/12(水) 06:11:47 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
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
なんか変
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
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
なんか変
178デフォルトの名無しさん
2011/01/12(水) 07:48:14179デフォルトの名無しさん
2011/01/12(水) 07:56:39 クラス化版(テスト)
http://codepad.org/kiaIznYR
http://codepad.org/kiaIznYR
180デフォルトの名無しさん
2011/01/12(水) 08:22:17 どうでもいいリファクタしてないで宿題やってやれよ
181デフォルトの名無しさん
2011/01/12(水) 08:58:54182デフォルトの名無しさん
2011/01/12(水) 09:22:11 一箇所修正
修正前
except StopIteration, e:
self.running = False
修正後
except StopIteration, e:
self.running = False
self.kwClock.set('STOP')
にしてください
後者の方が安定します(謎
修正前
except StopIteration, e:
self.running = False
修正後
except StopIteration, e:
self.running = False
self.kwClock.set('STOP')
にしてください
後者の方が安定します(謎
183172
2011/01/12(水) 12:00:19 >>173-182
こんなにレスもらえるとは思ってませんでした.レスをしてくれた皆さん,ありがとうございました.
作成していただいたプログラム(http://codepad.org/OtCGyrps)はWin7(64bit), Python 2.5.2の環境で正しく動作しました.
どうもありがとうございました.
(ちなみに,Mac OS 10.6, python 2.6.1では動きませんでした.
Tkinterはクロスプラットフォームと思ってましたが,OSに依存するコードもあるのかな?)
これから,皆さんに書いていただいたソースコードを解読していこうと思います.
また機会がありましたら,よろしくお願いします.
こんなにレスもらえるとは思ってませんでした.レスをしてくれた皆さん,ありがとうございました.
作成していただいたプログラム(http://codepad.org/OtCGyrps)はWin7(64bit), Python 2.5.2の環境で正しく動作しました.
どうもありがとうございました.
(ちなみに,Mac OS 10.6, python 2.6.1では動きませんでした.
Tkinterはクロスプラットフォームと思ってましたが,OSに依存するコードもあるのかな?)
これから,皆さんに書いていただいたソースコードを解読していこうと思います.
また機会がありましたら,よろしくお願いします.
184デフォルトの名無しさん
2011/01/12(水) 16:15:42185デフォルトの名無しさん
2011/01/12(水) 19:29:28 10.6 Python 2.6.1で普通に動いたぞ
186デフォルトの名無しさん
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] その他:
[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] その他:
187デフォルトの名無しさん
2011/01/13(木) 16:27:50 import sys
print eval(''.join(sys.argv[1:]).replace('x', '*'))
print eval(''.join(sys.argv[1:]).replace('x', '*'))
188デフォルトの名無しさん
2011/01/13(木) 16:59:44 出来ました
早速の回答ありがとうございます
なんでそうなるのか良くわかりませんが
これから書いていただいたソースコードを解読していこうと思います
また機会がありましたらよろしくお願いします
早速の回答ありがとうございます
なんでそうなるのか良くわかりませんが
これから書いていただいたソースコードを解読していこうと思います
また機会がありましたらよろしくお願いします
189見習い
2011/01/14(金) 14:02:03 解答お願いします。
1. 下記のような九九の計算表を出力するプログラムを作成し、実行してください。このとき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 ループを含むようにしてください
1. 下記のような九九の計算表を出力するプログラムを作成し、実行してください。このとき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 ループを含むようにしてください
190デフォルトの名無しさん
2011/01/14(金) 14:49:14 >>> for r in xrange(1, 10):
... print '%dの段' % r,
... for c in xrange(1, 10):
... print r * c,
... print
...
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
... 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
191デフォルトの名無しさん
2011/01/14(金) 14:50:27 インデント消えてた orz
for r in xrange(1, 10):
print '%dの段' % r,
for c in xrange(1, 10):
print r * c,
print
for r in xrange(1, 10):
print '%dの段' % r,
for c in xrange(1, 10):
print r * c,
192デフォルトの名無しさん
2011/01/14(金) 15:10:07 q12.py
# -*- 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'')
# -*- 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'')
193見習い
2011/01/15(土) 12:34:05 2. 以下の手順に沿って二次方程式の解を計算するプログラム q2.py を作りなさい。ただし、実行結果は以下の黄色の囲みの部分の通りになるようにしなさい。なお、平方根の計算には math.sqrt() を使うことができます。
(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 です
(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 です
194デフォルトの名無しさん
2011/01/15(土) 18:01:28195見習い
2011/01/15(土) 23:31:27 >>189 の続きもおながいします。
196デフォルトの名無しさん
2011/01/15(土) 23:53:23 [1] 授業単元:プログラミング及び演習II
[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 関数を使用して下さい。
[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 関数を使用して下さい。
197デフォルトの名無しさん
2011/01/16(日) 22:44:46 >>195
> 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)
> 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)
198デフォルトの名無しさん
2011/01/17(月) 01:49:45199デフォルトの名無しさん
2011/01/17(月) 02:43:58 >>189
メールの意味が訳わからん
メールの意味が訳わからん
200デフォルトの名無しさん
2011/01/20(木) 17:18:41 >>189
3. 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)
3. 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)
201見習い
2011/01/24(月) 15:47:12 占い文を fortune.dat から取り出すようにしなさい。
(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
(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
202デフォルトの名無しさん
2011/01/24(月) 17:55:12 #!/usr/bin/env python
# -*- 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
# -*- 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
203まるっきりの初心者。
2011/01/24(月) 20:44:42 import osg,osgDB,osgViewer,osgGA
import 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
import 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
204まるっきりの初心者。
2011/01/24(月) 20:46:23 # keyboard handler
class 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
class 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
205まるっきりの初心者。
2011/01/24(月) 20:47:09 #create frame
def 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)
def 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)
206まるっきりの初心者。
2011/01/24(月) 20:47:49 #shifting the plane if the plane is satisfied
def 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 )
def 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 )
207見習い
2011/01/29(土) 13:26:55 3. 下記の手順に従ってsin(x)/x=0.90の近似解xを求めるスクリプトを作成しなさい。なお、sin(1.)/1.≒0.85で、ここからxの減少に伴ってsin(x)/xの値が単調増加することはわかっているものとします。スクリプトの名前はkinji.pyとしてください。
(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)
(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)
208デフォルトの名無しさん
2011/01/29(土) 14:44:52 >>207
手続き型言語なんだから、手続きが書いてある場合は、書いてある通りにとりあえず書いてみろ。
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を使わないといけないのだったら、使うように自分で改造してくれ。
手続き型言語なんだから、手続きが書いてある場合は、書いてある通りにとりあえず書いてみろ。
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を使わないといけないのだったら、使うように自分で改造してくれ。
209見習い
2011/01/29(土) 15:30:57 1.半径rの円の面積の値を戻す関数carea(r)を,モジュールq1.pyに作成しなさい。また,インタラクティブモードで正しく動作することを確認しなさい。解答には,q1.pyの中身と実行結果を含めてください。
実行例 (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)!)
実行例 (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)!)
210デフォルトの名無しさん
2011/01/29(土) 20:56:23 またおまえかよ
211デフォルトの名無しさん
2011/01/29(土) 21:08:49 >>209
1.
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])
1.
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])
212デフォルトの名無しさん
2011/01/29(土) 21:31:24 問題読んでる途中で寝てしまった orz
213デフォルトの名無しさん
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
コマンドラインで指定したディレクトリ(例: 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
214213
2011/01/30(日) 05:05:41 ageます。
出力例がずれているのですが、
html ソースを見ると空白が入っているので
恐れ入りますが空白数はそちらを参照してください。
出力例がずれているのですが、
html ソースを見ると空白が入っているので
恐れ入りますが空白数はそちらを参照してください。
215デフォルトの名無しさん
2011/01/30(日) 05:21:43 c:\test直下のファイルとサイズは数えなくていいのか?
ディレクトリ階層全体のサイズも気にしなくていいのか?
それからtotalって何の合計?
ディレクトリ階層全体のサイズも気にしなくていいのか?
それからtotalって何の合計?
216デフォルトの名無しさん
2011/02/03(木) 23:33:36 次のスレッドタイトルは「Python の宿題ここで答えます 3匹目」にしようや。
Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
217デフォルトの名無しさん
2011/02/03(木) 23:51:47 3缶目だとjk
218デフォルトの名無しさん
2011/02/04(金) 01:13:28 角電池3本目
219デフォルトの名無しさん
2011/02/06(日) 01:35:45 我々の武器は3つ
220デフォルトの名無しさん
2011/02/06(日) 04:07:47 単3
221デフォルトの名無しさん
2011/02/09(水) 03:08:02 目指してる 未来が違うwwww byシャープ
http://twitter.com/MASA_37/status/8040170771185664
http://twitter.com/MASA_37/status/8040170771185664
222デフォルトの名無しさん
2011/02/09(水) 08:51:54 2011年数学IIB第6問
nを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
nを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
223デフォルトの名無しさん
2011/02/09(水) 08:52:40 「エ」に当てはまるものを、次の0〜5のうちから一つ選べ。
0. 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で解いてみてくだされ
0. 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で解いてみてくだされ
224デフォルトの名無しさん
2011/02/10(木) 20:13:39 確認するがプログラムの作成の部分だよな?
225デフォルトの名無しさん
2011/02/10(木) 21:58:26 pythonでプログラムを作成してください
ただしループが何回回るかも知りたいです
ただしループが何回回るかも知りたいです
226デフォルトの名無しさん
2011/02/13(日) 15:50:27227デフォルトの名無しさん
2011/02/14(月) 05:56:14 ありがとうございました
228デフォルトの名無しさん
2011/02/14(月) 06:46:36 ◆QZaw55cn4c
229デフォルトの名無しさん
2011/02/17(木) 02:08:54 project euler problem02
http://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万を超えない範囲で、偶数の項の総和を求めよ。
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
http://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万を超えない範囲で、偶数の項の総和を求めよ。
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
230デフォルトの名無しさん
2011/02/17(木) 02:20:00 >>229
x, 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)
x, 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)
231デフォルトの名無しさん
2011/02/17(木) 03:05:51232デフォルトの名無しさん
2011/02/17(木) 03:14:27 >>231
400 * 10000
400 * 10000
233デフォルトの名無しさん
2011/02/17(木) 03:17:19 あ、ほんとだ0一個足りないですね。
気付かなかった
気付かなかった
234デフォルトの名無しさん
2011/02/18(金) 14:42:07235デフォルトの名無しさん
2011/02/18(金) 14:43:53 ↑パス書き忘れた orz
turtle
です
turtle
です
236デフォルトの名無しさん
2011/02/19(土) 23:21:19.92 適当なサイトからリンク先へとどんどんクロールしたいんですがurllibとre.compile()でURL見つけて再帰処理って感じで良いでしょうか?
237デフォルトの名無しさん
2011/02/20(日) 07:21:55.93238デフォルトの名無しさん
2011/02/20(日) 19:51:45.98 ttp://hogehoge とかにも対応したいんで正規表現で逝きます
239デフォルトの名無しさん
2011/02/21(月) 18:15:28.88240デフォルトの名無しさん
2011/02/21(月) 19:08:05.82 壊れたHTML文書に出会いませんように
241デフォルトの名無しさん
2011/02/22(火) 02:13:32.37242デフォルトの名無しさん
2011/02/22(火) 21:29:41.55 >>241
htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
243デフォルトの名無しさん
2011/02/22(火) 21:39:40.08 つlxml.html
244デフォルトの名無しさん
2011/02/24(木) 16:49:31.84 Beautiful Soupってどうなの?
245デフォルトの名無しさん
2011/02/26(土) 22:27:24.99 なかなかいいよ
246デフォルトの名無しさん
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のフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
以下のページにある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のフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
247デフォルトの名無しさん
2011/03/01(火) 01:40:52.05 【 課題 】
ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ
それが回文数になるまで同じ操作を繰り返したとき
最も回文数になりにくい 3桁の数を見つけてください
【 Ver 】Python2.x
【 補足 】
回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです
なお 2桁の場合は 89, 98 が最大で 24回だそうです
ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ
それが回文数になるまで同じ操作を繰り返したとき
最も回文数になりにくい 3桁の数を見つけてください
【 Ver 】Python2.x
【 補足 】
回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです
なお 2桁の場合は 89, 98 が最大で 24回だそうです
248デフォルトの名無しさん
2011/03/01(火) 17:39:09.29 >>247
しょーがねぇ、俺がとっておきを披露してやろう。
#! /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
しょーがねぇ、俺がとっておきを披露してやろう。
#! /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
249デフォルトの名無しさん
2011/03/01(火) 23:39:48.44 ひどすぎる
250デフォルトの名無しさん
2011/03/02(水) 00:30:45.95 >>247
def 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で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
def 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で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
251デフォルトの名無しさん
2011/03/02(水) 01:13:16.28252デフォルトの名無しさん
2011/03/02(水) 02:04:24.48 初心者なのですが勉強で>>247をやってみようと思って、
以下のコードを書いたのですが、タプルを返してるつもりが、
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))
以下のコードを書いたのですが、タプルを返してるつもりが、
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))
253デフォルトの名無しさん
2011/03/02(水) 02:08:52.72 >>252
else: の後をよく見てみよう。
else: の後をよく見てみよう。
254デフォルトの名無しさん
2011/03/02(水) 02:12:23.22 return がなかったです…。ありがとうございます。これで寝られます。
255デフォルトの名無しさん
2011/03/04(金) 18:30:06.95 ベストアンサーまだですか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★6 [ぐれ★]
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 【鹿児島】容疑者は大学生。国道3号を横断中の母娘を車ではねる――「太陽がまぶしくて見えなかった」。20歳女を現行犯逮捕 日置署 [ぐれ★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【芸能】ワイドショーはオワコンなのか... フジ・朝の情報番組『サン!シャイン』1年で打ち切り報道 テレビよりSNSの視聴者 [冬月記者★]
- 【日銀】0.75%に利上げへ 来週の決定会合で、30年ぶり水準 賃金改善の継続見込む [ぐれ★]
- 知識層、気ずく…日本の愛国保守はなぜ統一教会を批判しないんだ… [819729701]
- (ヽ´ん`)「嫌儲はマジで高IQ集団だろ」 [357264179]
- 【正論】X民「ドラクエに一言いいたいんだけどさ、もう人ん家のタンスあさりやめない?価値観アップデートして」5万いいね [339712612]
- 【巨人】阿部監督「坂本はブッ壊れてもいいやって思えるかどうかが重要だね」
- 【高市速報】日本、イギリスフランスドイツに相次ぎ告げ口外交を開始wwwwwwww🤪 [931948549]
- 【悲報】最近のキッズ、これがなにかわからない……
