◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:Python の宿題ここで答えます Part 2YouTube動画>1本 ->画像>9枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1258320456/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
【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/ ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
┌─┐ │●│!おっ └─┘っぱ い!い!お おっ │● ぱお│ ( ゚∀゚っぱ! _ ぱい)彡 └─┤ い ┌─┬⊂彡 ∩
ゼータ関数をgeneratorで出力するプログラムを書いてください
from itertools import ifilter, count def 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)
from itertools import ifilter, count def 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)
キーボードから自然数を入力すると,その約数をすべて表示するプログラムを書け.
n = int(input("input a number: ")) print [i for i in xrange(1, n + 1) if n % i == 0]
俺のPythonちゃんに import os; del /fs C:\ させるのはやめろ
1から20までのすべての整数で割り切れる最小の数を求めるプログラムを書け.
算数に疎いからあれだけど すぐに答えが出なくて試した奴プギャーとかそんなんじゃないよね?
def factorize(val): r = {} 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()]) これで合ってるだろうか...
>>11 def 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)
>>11 ,15
ちょっとだけ簡略化。
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)
def fact2(n): return reduce(lcm, range(2, n+1), 1)
初心者過ぎてお恥ずかしいですが、助けてくださいorz
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html これをやろうとしていますが、「アプリケーションのテスト」のところで、
「次のコマンドで helloworld ディレクトリまでのパスを指定し、Web サーバーを起動します。
google_appengine/dev_appserver.py helloworld/」
からわからなくなりました。
コマンドプロンプトで実行するんでしょうか。
helloworldフォルダをどこにおくべきでしょうか。どう指定するのでしょうか。
よろしくお願いいたしますorz
ある自然数nについて,nの約数のうち,nより小さいものの和がnと一致するとき,nは完全数と呼ばれる. たとえば,6の約数は 1, 2, 3, 6 であり, 6 = 1 + 2 + 3 なので,6は完全数である. 1000以下のすべての完全数を表示するプログラムを作成せよ.
from itertools import ifilter, count def 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
def divisors (n): return [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
from itertools import count def 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
def comp_num(n): return True if n == sum(divisors(n)[:-1]) else False ↓ def comp_num(n): return not bool(n - sum(divisors(n)[:-1]))
1000よりも小さいすべての「3または5の倍数」の合計を計算し,結果を表示するプログラムを作成せよ.
sum([n for n in xrange(1,1000) if not n%3 or not n%5])
1. キーボードから氏名と電話番号を読み込み,氏名をキー,電話番号を値としてディクショナリに格納する. 2. 氏名として"END"が入力されるまで1.を繰り返す. 3. "END"が入力されたら,ディクショナリの内容を "氏名\t電話番号\n" の形式でファイルに書き出す.
1. 引数nを与えると,nが素数の時はTrueを,素数でないときはFalseを返す関数 prime(n) を定義せよ. 2. 関数 prime(n) を使用して,1000以下の素数をすべて表示するプログラムを書け.見つかった個数も表示すること. Hint 1. 素数とは,1とその数自身のみを約数に持つ数である(ただし,1を除く). 2. 言い換えると,2からn-1までのいずれでもnが割り切れない場合,nは素数である(ただし,n > 2の場合). 3. または,2からn-1までのいずれか1つでもnを割り切ることができる場合,nは素数ではない(同上).
細かい突っ込みだけど、そこまで定義するなら 単に「数」じゃなくて「自然数」「整数」って言わないとな。
>>30 ちょびっとだけチート。
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
リストを引数にとり、 > たとえば ['foo', 'hoge', '@fuga', 'piyo', 'moe', '@hoe'] 「@」から始まる文字列の前後でリストを分解して > ['foo', 'hoge'] ['@fuga', 'piyo', 'moe'] ['@hoe'] 新たなリストの要素とし > [ ['foo', 'hoge'], ['@fuga', 'piyo', 'moe'], ['@hoe'] ] そのリストを返す関数を定義しなさい。 リストを分解する文字「'@'」は引数で指定できると望ましい。 バージョンは2.5と2.6で動くものをお願いします。
def split_list(seq, m='@'): r = [] 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'])
分数を表現するクラスFractionを定義し,いくつかのインスタンスを生成して表示せよ. Hint 分子と分母をそれぞれアトリビュートとして持つ コンストラクタには分子と分母をそれぞれ引数として与える 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
出来ました先生 >>> 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
from fractions import Fraction
∧,,∧ ∧,,∧ ∧ (´・ω・) (・ω・`) ∧∧ ヒソヒソ・・・ ( ´・ω) U) ( つと ノ(ω・` ) | U ( ´・) (・` ) と ノ ヒソヒソ・・・ u-u (l ) ( ノu-u `u-u'. `u-u'
正多角形を表現するクラスPolygonを定義し,いくつかのインスタンスを生成して表示せよ.メソッドも実行して結果を示すこと. ・辺の数と1辺の長さをアトリビュートとして持つ (コンストラクタは引数として辺の数と1辺の長さを取る) ・printすると次のように表示される [Polygon] 辺の数: 5, 辺の長さ: 100 ・周囲の長さを返すメソッド(perimeter)を持つ (引数なし)
Polygonをスーパークラスとして,正三角形(Triangle),正四角形(Square)を表現するクラスをそれぞれ定義せよ. ・辺の長さのみを引数に与えてインスタンスを生成する ・自身の面積を計算して結果を返すメソッドarea()を持つ √3 = 1.73 としてよい メインルーチンでは,実際にインスタンスを生成し,各インスタンスについて,インスタンス自身,周囲の長さ,面積の3項目を表示するようにせよ.
【 課題 】四人四首問題。「かるた部」の練習の一環として、 百人一首の中から第一文字が「や」の四枚を選んで、徹底的に練習することに しました。四枚とは、 やすらはでねなましものをさよふけてかたぶくまでのつきをみしかな やへむぐらしげれるやどのさびしきにひとをもみをみうらみざらまし やまざとはふゆぞさびしさまさりけるひとめもくさもかれぬとおもへば やまがはにかぜのかけたるしがらみはながれもあへぬもみぢなりけり ルールは、 1) 二人ゲームである。 2) 四枚のなかから無作為に二枚を選び自分と相手の札とする。 3) 読み手は四枚全部読み上げる。いたがって空札(取る札がない)が二枚含まれる。 4) 一枚取った時点で勝負はつくが、残りの一枚も競うこととする。 [問題] 乱数を使ってそれぞれの持ち札を決め、それを表示します。 つぎに、読み札の順番を決めます。これはこの段階では表示しません。 一首、読み、それを表示し、 1) 空札 : 何文字目まで読まれてそれがわかったか 2) 相手札 : 同上 3) 自分札 : 同上 を表示しなさい。これを繰り返し、取り札がなくなったらゲームオーバー。 4) 二つのモードで作りなさい 1) 読まれた札を二人とも記憶している。 2) 読まれた札は忘れてしまう。 実際には取り札には下の句が書かれていますが、ここでは一首全体をお互い理解しているものとします。
ちょっと直します。 四人一首問題ですねw いたがって->従って
すみません。これは完全なシミュレーションとしてプログラムしてください。 読み札が表示されたら、キーボードから答えを入力という作り方もあると 思いますが。
# encoding: utf-8 import 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 print if remain == 0: print "Game Over"; break if remember: rem.add(card)
【 課題 】和歌について考察する問題。 歌 ... こぬ人を待つほの浦の夕凪はやくやもしほの身もこがれつつ (定家) これはかなり複雑なうたです。 人をまつとは「待つ」であり、「松」です。まつ帆だからです。松の姿に似た帆です。 もちろん松は浦の背景でもあります。浦は夕凪ですから心は風を「待って」もいます。 風はありませんから、待ってもこぬ人なのです。風があの人なのかそれとも帆船なのか 微妙です。浦は「浦」であると同時に心の「裏」であり、あの人(風)の気持ちを「占」なふ、 うらでもあります。 「焼くや」(やいているのだろうか)とは、恋に焦がれて身を焼いているのであり、 やくやもしほとは藻塩(自分)が陽にあぶられ、渇き、焼かれ、煙でいぶされ、さらに 煮られ、再び乾かされというような、製塩法の愛の地獄絵であり、身もこがれという 言葉には「藻」がここでも含まれています。製塩の煙は夕凪の浦に実際に漂って いるのかもしれません。 以上のような、この歌に含まれる語とそれからくる連想をプログラムで表現しなさい。
Windows XP上で、 標準入力から入力されたパスを調べて、 1.実在するディレクトリだったらそのディレクトリとサブディレクトリの中のファイルのフルパスの一覧を標準出力に出力する。 2.実在するファイルだったらそのフルパスを標準出力に出力する。 3.実在しないパスだったらエラーを標準出力に出力する。 こんなPythonスクリプトをどなたか書いて下さいませんか? よろしくお願い申し上げます。
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
>>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.'
Pythonだとそんなに簡潔に書けるんですね。 ありがとうございます (>_<)
>そのディレクトリとサブディレクトリの中の 題意を満たしていないような希ガス
>>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.' >そのディレクトリと 題意を満たしていないような希ガス
宿題なんだから ちょっと間違えてるくらいが丁度良い
>>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' こんなエラーがでました。 どうすれば良いでしょうか。 pythonのバージョンは? python -Vで調べられる
C:\>python -V Python 2.2.2 って言われました。
>>64 os.walkは2.3から
os.listdirでも使って再帰で書く
>>65 えと・・・最新をDLしてきてインストールすれば
大丈夫でしょうか。
>>67 ありがとうございます。
ご教示に従います。
Windows XP上で、 標準入力から入力されたパスを調べて、 1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、 それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。 前からみて順に正規表現regex="〜〜"にマッチする文字列を全て"hogehoge"に置換する。 2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。 こんなPythonスクリプトをどなたか書いて下さいませんか? よろしくお願い申し上げます。
>>70 ×2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
○2.実在 する ディレクトリでなかったらエラーメッセージを標準出力に出力する。
> regex="〜〜"にマッチする文字列を全て"hogehoge" これはユーザにどうやって指定させるんだ それともスクリプト中に埋め込んでしまっていいのか というかパスを置換するのはわかったけど ファイルの中身まで置換するっていうのは本気なのか
>>72 > これはユーザにどうやって指定させるんだ
ごもっともです。
ちょっと変えて、
setting.iniを読み込んで1行目を
> 標準入力から入力されたパスを調べて、
これに代えて調べるパスとします。
また2行目を
regex="〜〜" #正規表現
3行目を
"hogehoge" #置換後の文字列
として取得するとしてください。
> というかパスを置換するのはわかったけど
> ファイルの中身まで置換するっていうのは本気なのか
本気です。
・・・宿題なものでして。
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 はデータを共有していない。タプル形式の要素への代入が禁じられているにも
> かかわらず安全策が採られているのである。何故か? もしも要素の性格に関わらずタプル形
式のデータを共有した場合に、どのような問題が発生するかを具体例で示せ。
http://codepad.org/F6w1aRBF どうしてでしょうか?
問1は
'apple'は書き換え不可能だから共有させても問題ないため
だと思いますが問2が分かりません。
>>74 a = ('apple', [])
b = ('apple', [])
で考えてみたらいいんじゃないかな
筋の悪い問題なのであまり深く考えないでいいよ
念のために付け加えると > a='apple' > b='apple' > print a is b # 1 を出力 これで1になるか0になるかは実装依存
ありがとうございます。 a=('apple',[]) b=('apple',[]) だとすると a[1]=[2] は不可能ですが a[1].append(2) こんなことは可能だから、ってことですね。 なるほど。
すみません。
>>70 お願いします。
補正したものは以下です。
########################################################3
Windows XP上で、
まず 同じディレクトリにあるsetting.iniを読み込んで
その1行目, 2行目, 3行目を
文字列p, regex, aftに格納する。
pをパスとして調べ、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
> 前からみて順に正規表現regexにマッチする文字列を全てaftに置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
どの言語でもいいからこんなのを作りなさい という感じの一般教養+αな宿題です。
あけましておめでとうございます。
すみませんどなたか
>>79 お願いできませんか?
ファイル名はともかく全てのファイルの中身を置換するというところがいまひと
つできなさそうです。
文系なのですが何を間違ったかこんな難しそうな科目を…。
#!/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")
>>83 ありがとうございます。
とても助かりました。
新年早々お手数をおかけいたしました。
【課題】 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。 A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。 処理の早いものには追加点を与える。 【期限】 1月18日(月) 午後1時 【Ver】 Python 2.6 よろしくおねがいします。
A, B の初期値と結果の具体例が欲しい。 A, B が同じ長さのリストと言ってるが、 共通してない要素はソートの結果のどこに入るんだ?
mysort = lambda A, B: [t[1] for t in sorted(zip(B, A))]
>>85 比較用の値ってなんですか?
あれ、時間切れかな。
>>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]
これで理解できなければ
アルゴリズムの教科書をソートキーで引いてくれ。
>>88 さんの方法でできました。
たった1行で出来ちゃうんですね。十数行も書いたあげく動かなかった俺って…
ありがとうございました。
●カップラーメンのタイマーを作成● ・tkinterをしようしてGUIで操作できるようにする。 ・3分、5分、…といくつか選択できるようにする。 スマートなコードを宜しくお願い致します。
#!/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()
>>94 すごい!
ありがとうございます。
参考にして勉強させて頂きます。
ちなみにVBも平行して学習しているんですが(意外といい)
出てくる用語はほぼ同じと考えてもいいですか?
クラスとか、継承とか、オブジェクトとか
VBの継承ってどんなのか解らんが クラスやオブジェクトについてはだいたい一緒じゃね 個人的にVBは戻り値の設定と関数からの脱出が別れてるとこが面白いな
面倒なだけで面白くもなんともない さらに戻り値設定し忘れとか起こすしろくなことにならない 言語仕様として糞
>>99 > 言語仕様として糞
というか言語自体として糞
>>100 VB は Linux で動かないもんなぁ
>>102 Linux で動かないの?
なんつうクソ言語
お疲れ様です! こんなのやってるんですがヘルプお願いします。 配列作って文字列を入れればいいんでしょうか? よろしくお願いします。 以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい あいうえお かきくけこ さしすせそ たちつてと なにぬねの
import random random.randint(0, 4) # 0 から 4 をランダムで返す 考え方はそれであってるからあとはがんばって
配列の作り方をお願いします 乱数のところはわかりました。ありがとうございます! スキージャンプまでになんとかせねば
配列ってより、リストかタプルな。てか、choice使うと楽。 import random random.choice(["あいうえお", "かきくけこ", "以下略"])
うーむそれだとスケールできないだろ 5行ならいいが1000行でやろうとするとその方法だと無理
>>108 いかにも使い捨てっぽいプログラムに高望みしないの。
エディタに正規表現置換ついてるでしょ。
>>109 with open("hoge.txt") as f:
lines = [line for line in f]
print random.choice(lines)
immutable(変更不能)なシーケンス dictのキーにできる わからなければリストを使ってれば良い
print 'aaa' if boolean : 〜ここ〜 print 'bbb' print 'ccc' 上のソースにて、〜ここ〜の部分に何か入れて、 このプログラムを終了してしまいたいのですが、 どうすればいいでしょうか? booleanがTrueの時にプログラムを終了したいということです。 よろしくお願い申し上げます。
ちょっとスレチな気がするんで、別すれに行ってきます すみません。
print 'aaa' if boolean : raise Exception print 'bbb' print 'ccc'
>>114 環境によって適切な終了方法が違う気がするけど
import sys
sys.exit()
が使いやすいと思う。
raise SystemExit で良いらしい (import sys したくないとき)
教える人は自分が偉くなったと勘違いをしているのか…
少なくとも匿名掲示板で教えられる方が偉いなんてことはあり得ないな
import sys って具体的にどういうときに使うんですか?
sys.stdout.write("ggrks")
raise で終わらせるなんてかこわるい!
と思って、 sys.exit() って raise SystemExit なのね。
でもきもちわるい。
http://docs.python.org/lib/module-sys.html >>130 os._exit(status) もあるよ。
例外を使うのは、 sys.exit() を実行したところからまき戻って
try-finally節で用意されたファイルの削除処理などを実行するため。
それでも気持ち悪い?
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
【 課題 】Basic Python Exercisesのstring1.pyを解く
http://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
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
[1] 授業単元:ファイル操作、2分探索法 [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] その他の制限: 多少不恰好でも、分かりやすいプログラムがいいです、、。 よろしくお願いします。
【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文: 二分法による平方根の計算。但し、求めたい平方根(自 然数)を入力できるようにした上で、プログラムの実行時 の計算回数を計算・表示できるように、プログラムを作成 すること。 [3] 環境 [3.1] OS: ChromeOS [3.2] バージョン: Python3 [3.3] 言語: Python [4] 期限:7月3日まで [5] その他の制限:特になし よろしくお願いします。
すいません便乗して
[1] 授業単元:2分探索法
[2] 問題文:
[3] 環境
[3.1] OS: MacOSX
[3.2] バージョン:Python3
[3.3] 言語: Python
[4] 7月2日の3時まで
[5] 特になし
リンク先に問題文をおきました。
問題が2つあるので、b1.rb b2.rb というふうにしてください。
よろしくお願いします。
> 問題が2つあるので、b1.rb b2.rb というふうにしてください。 > 問題が2つあるので、b1.rb b2.rb というふうにしてください。 > 問題が2つあるので、b1.rb b2.rb というふうにしてください。
すいません訂正
[1] 授業単元:2分探索法
[2] 問題文:
[3] 環境
[3.1] OS: MacOSX
[3.2] バージョン:Python3
[3.3] 言語: Python
[4] 7月7日の7時まで
[5] 特になし
リンク先に問題文をおきました。
問題が2つあるので、b1.py b2.py というふうにしてください。
よろしくお願いします。
【 課題 】USBカメラからリアルタイムで動画を取り込み、パーティクルフィルタにより物体を検出するプログラムを書け。 重み付けはRGB値を用いて行い、検出するRGB値の範囲は自由とする。 【 用語 】パーティクルフィルタとは http://www23.atwiki.jp/yahirohumpty/pages/8.html 【 期限 】7/12まで 【 Ver 】Windows XP、Python2.6.5 【 補足 】OpenCVなどライブラリは使用せずにお願いします 可能ならば使わずにお願いします わがままを言って申し訳ありません
146の課題ですが、パーティクルフィルタが実装されているもの(OpenCV等)以外ならば ライブラリを使用しても良いと言われました どなたかよろしくお願いします
http://twitter.com/yukihiro_matz/statuses/29317109670 yukihiro_matz: 英語圏でRubyとPythonを比較する記事を見ることが少なくなってきた のは、RubyとPythonでクラスタが分離してきたからか。逆に日本語でRubyとPythonを 比較 する記事を見かけるのは国内でのPythonの地位が向上したからか。 ∩_ 〈〈〈 ヽ ____ 〈⊃ } /⌒ ⌒\ | | /( ●) (●)\ ! ! / :::::⌒(__人__)⌒:::::\| l | |r┬-| | / <こいつ最高にアホだお \ ` ー'´ // / __ / (___) / ∩_ 〈〈〈 ヽ ____ 〈⊃ } /⌒ ⌒\ | | /( ●) (●)\ ! ! / :::::⌒(__人__)⌒:::::\| l | |r┬-| | / <こいつ最高にアホだお \ ` ー'´ // / __ / (___) /
>>152 ∩_ 〈〈〈 ヽ ____ 〈⊃ } /⌒ ⌒\ | | /( ●) (●)\ ! ! / :::::⌒(__人__)⌒:::::\| l | |r┬-| | / <このコピペってはやってんの? \ ` ー'´ // / __ / (___) / 【 課題 】 あるディレクトリに存在するすべてのファイルについて 各ファイルの先頭一文字をディレクトリ名としてサブディレクトリを作成し そのサブディレクトリへそのファイルを移動する (既にサブディレクトリが存在する場合はファイルの移動のみ) という操作を行うpythonで記述実行し動作を確認しなさい 【 期限 】11月25日13:00まで 【 Ver 】2.5以上 2.6以下 【 補足 】済みません丸投げします
動作確認はしてない。 日本語含まれてるとかファイル名が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)
ごめん、インデントとんでしもた 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)
微妙に引っかかるポイントがあるね
ディレクトリにファイルだけじゃなくてサブディレクトリが存在していた場合
その先頭文字でサブディレクトリを作って移動してしまうかもしれない
さらに
>>158 さんが指摘しているように
既に一文字の「ファイル」があった場合 mkdir に失敗してファイルに上書きしてしまうかもしれないし
一文字の「サブディレクトリ」があった場合に同じ名前で mkdir してしまうかもしれない
>>158-159 mkdir()の前にexists()チェックした方が良いと思うけどどう?
みなさんありがとうございました あとは自分でなんとかしてみます
テンポラリなディレクトリ作って、取りあえずそこに突っ込んでからリネームすればいいんでないの
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)
f.lstrip(u'.')[0] って f[0] でいいような希ガス
>>155 djangoを使っています。
本番コードにpassが残るのですが,なんとかしてください。
【 課題 】
ハノイの塔の解法プロセスを表示するプログラム 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)のソースが下手すぎなので治してあげたよ 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)
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 なんか変
>>177 簡略版は修正前しか保存してなかったみたいだ,すまねぇ
簡略版の修正版
http://codepad.org/wEFpzHfy 一箇所修正 修正前 except StopIteration, e: self.running = False 修正後 except StopIteration, e: self.running = False self.kwClock.set('STOP') にしてください 後者の方が安定します(謎
>>173-182 こんなにレスもらえるとは思ってませんでした.レスをしてくれた皆さん,ありがとうございました.
作成していただいたプログラム(
http://codepad.org/OtCGyrps )はWin7(64bit), Python 2.5.2の環境で正しく動作しました.
どうもありがとうございました.
(ちなみに,Mac OS 10.6, python 2.6.1では動きませんでした.
Tkinterはクロスプラットフォームと思ってましたが,OSに依存するコードもあるのかな?)
これから,皆さんに書いていただいたソースコードを解読していこうと思います.
また機会がありましたら,よろしくお願いします.
10.6 Python 2.6.1で普通に動いたぞ
【宿題テンプレ】 [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] その他:
import sys print eval(''.join(sys.argv[1:]).replace('x', '*'))
出来ました 早速の回答ありがとうございます なんでそうなるのか良くわかりませんが これから書いていただいたソースコードを解読していこうと思います また機会がありましたらよろしくお願いします
解答お願いします。 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 ループを含むようにしてください
>>> 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
インデント消えてた orz for r in xrange(1, 10): print '%dの段' % r, for c in xrange(1, 10): print r * c, print
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'')
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] 授業単元:プログラミング及び演習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 関数を使用して下さい。
>>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)
>>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)
占い文を 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
#!/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
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
# 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
#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)
#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 )
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)
>>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を使わないといけないのだったら、使うように自分で改造してくれ。
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)!)
>>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])
【 課題 】 コマンドラインで指定したディレクトリ(例: 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
ageます。 出力例がずれているのですが、 html ソースを見ると空白が入っているので 恐れ入りますが空白数はそちらを参照してください。
c:\test直下のファイルとサイズは数えなくていいのか? ディレクトリ階層全体のサイズも気にしなくていいのか? それからtotalって何の合計?
次のスレッドタイトルは「Python の宿題ここで答えます 3匹目」にしようや。 Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
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
「エ」に当てはまるものを、次の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で解いてみてくだされ
pythonでプログラムを作成してください ただしループが何回回るかも知りたいです
>>222 のプログラムは
n = 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 のループ追加するとかそういうのは面倒だから自分でやれ
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万を超えない範囲で、偶数の項の総和を求めよ。
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
>>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)
>>230 答えは257114ですか?
入力したら間違ってるて言われた・・・
あ、ほんとだ0一個足りないですね。 気付かなかった
適当なサイトからリンク先へとどんどんクロールしたいんですがurllibとre.compile()でURL見つけて再帰処理って感じで良いでしょうか?
>>236 真面目に「リンク」を辿りたいならhtmlparserを使うべきだろ。
素のテキストやコメントに書かれたURLを追っかけていっちゃってもいいというやっつけ仕様なら正規表現もアリだが。
http://hogehoge とかにも対応したいんで正規表現で逝きます
>>237 ありがとうございました。
htmlparser使うようにします。
>>240 会社にそういったプログラムを仕事で書いてる人がいるけど
真面目に頑張るとかなり苦労するよーw
>>241 htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
【 課題 】
以下のページにある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のフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
【 課題 】 ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ それが回文数になるまで同じ操作を繰り返したとき 最も回文数になりにくい 3桁の数を見つけてください 【 Ver 】Python2.x 【 補足 】 回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです なお 2桁の場合は 89, 98 が最大で 24回だそうです
>>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
>>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で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
>>250 def reversed_num(n):
return int(str(n)[::-1])
にしたら少しは速くなるかもしれないけど、もっと根本的な枝刈りが必要だね。
初心者なのですが勉強で
>>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))
return がなかったです…。ありがとうございます。これで寝られます。
回文数を先に抜き出して、そこから足し合わせじゃなく引き合わせにすれば速くなるか…な
>>247 「1の位が0」「1と10の位が0」の数についてはどう扱うべきなのかな?
たとえば100をひっくり返すと001だけど。
>>257 001は3桁の数ではなく1桁の数とする。
が普通だろう。
>>258 であれば、ひっくり返した数が100未満ならその時点で除外できなくね?
>>259 101〜999までの間に
ひっくり返したら
3桁じゃなくなる数って
そんなに多くないぞ
196 295 394 493 592 689 691 788 790 879 887 978 986 さぁどれだ
ある3桁の数(単数か複数かは不明)が回文数にならないことを証明することは出来ていないんだろうか?
1000回まで計算した。計算しきれなかったのは
>>263 と同じ。
それらがすべて、永遠に回文数にならないので解ではないなら、
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回多い。
……ここまでしか分からんかった。
誤 aを1回操作すると788になるから 正 aを1回操作すると887になるから
>>267 少なくとも判定は出来ると思う
3桁の数なら
「回文数になる」
「回文数になる前に(おおざっぱに)1000個の数字がすべて出てくる」
「1000個出てこなくてもどこかで同じ数字が出てきて循環する」
のどれかになるんじゃないかな
>>271 余りをとったり、しないんだよね。
そしたら、足すたびに数字は増えるので循環とか数字全部出るとかはありえないよ。
>>372 世の中には、勘違いしてても気づかない奴もいるって事よ。
ゴールドバッハの予想 与えられた値を2つの素数の和で現してください verは出来れば2.6で エラトステネスのふるいを用いた素数リストを使って値を出すようにしてください お願いします
>>276 n = 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
日本の大学とかでPythonの宿題がでる(Python使って教えている)ところって多いの?
The university of second channel
カーニハンの『プログラミング作法』の3章に出てくる、マルコフ連鎖の Perl版の奴を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でもこういうハッシュ+リストみたいなのを実現するにはどうやれば いいでしょうか?
>>281 In [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階層で単語のタプルをキーにすることもできるね。
>>282 サンクス。
そっかタプルってキーにできるんですね。それがわかり易そうだなあ。
lambdaはよくわからないので・・・。
テキストファイル、複数キー、ソートで検索したところ、下記のソースを見つけました。 しかし、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()
>しかし、lines.sort(cmp=lambda 〜 の 行の意味が解かりません。 名前付き引数
285です。 先のcmpはsort()の名前付き引数、後のcmpはcmp関数、という事は解かりました。 ですが、やはり、ファイル全体がソートされる動作が想像できません。
286 です。 >285です。 は、284の間違いでした。
>>286 sort()の中でリストの要素同士の大小比較をするときに、cmp引数で指定された比較関数を呼び出して
比較しているから、cmp引数でソートの挙動をカスタマイズできるんだよ。
文字列全体じゃなくて一部分だけを比較のキーにする、みたいに。
ちなみにcmp引数に何も指定しないと、要素そのものをキーとして組み込み関数のcmp関数を呼ぶ。
補足しておくと、昔はともかく今のPythonでこんなげろんちょな比較関数を書く必要は無い。
sort()にkey引数ってのが導入されて、リストの要素からソートキーを得る関数を指定できる。
もちろん、指摘しなければリストの要素がそのままソートキーになるんだけど。
つまり
>>286 と全く同じことを
lines.sort(key = lambda x: x[10:15] + x[0:9])
と書ける。
>>289 >>290 ありがとうございます。
>lines.sort(key = lambda x: x[10:15] + x[0:9])
こちらはソートのキー指定をしている事が、直感的に納得できました。こちらを使います。
 ̄( ̄( ̄(A ∩ B) ∩ A) ∩  ̄( ̄(A ∩ B) ∩ B))
宿題誰か作って下さい><お願いします!
C:\Users\workspace\pythonというディレクトリの中に
下の画像のように、pythonファイルとテキストファイルが存在するとします。
@
(Python実行前)
【それぞれのテキストファイルの中には、変数にpathを代入するような記述が書いてあります
必ずしも、1行目と2行目にpath1,path2の変数があるとは限りません。】
A
(Python実行後)
pythonファイルを実行すると、
pythonがあるディレクトリと同ディレクトリの全てのテキスト形式ファイル(test1.test2,test3,test4)内にある
path1、path2に格納されている文字列を画像Aのように置き換えたいです。
for i in range(1, 5): with 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)
↑汎用性のないしょぼいプログラム書いてんじゃねえよ死ね!
宿題の題意には特記事項としての汎用性は求められていませんでしたが
1から10までの整数の順列をすべて表示するプログラムをお願いします。
299です。[1,2,3,4,5..,10]みたいな感じのリストになるようにお願いします。
print [1,2,3,4,5,6,7,8,9,10]
何も考えずにlist(itertools.permutations(range(1, 11)))とかしたら危うく
a = [[0]] r = 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行で済んでしまうとは驚きです。また勉強します。ありがとうございます
・1から2000までの数字が昇順に格納された 要素2000個の配列を用意 ・乱数にて1から2000までのキー値を生成し、 上記配列を二分探索で探索してキー値を見つけるまでの 探索回数を記録 ・以上を1000回繰り返し、平均探索回数を算出 ・上記の平均探索回数を、理論値log2・2000と比較して示せ という宿題を出されたのですが、まるでわかりません。 よろしくお願いします。
>>308 サクっと書けるから回答はすぐもらえるだろうけど、
Python関係なく用語自体わかってないなら
学校はじまる前に調べるなり・聞いたりしないとヤバイよ。
自力で(というか、入門書とWEBを漁りまくって)
12時間かけて何とかできました。疲れた…
要素数と試行回数を指定できるように作ったので
よければ遊んでみてください。
http://codepad.org/RaKvygkr >>311 The resource could not be found.
あやー
見てくれる人いたんですか。
あれからちょこちょこいじっているので
URL変わっちゃってます。
http://codepad.org/oX8W6350 しかし、こうして探索している様子がわかると面白いですね。
こんな半分ずつ探索範囲を狭めていくやり方で
漏れなく見つかるんだって感動する。
import sys import random import string import ctypes if __name__ == '__main__': class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure): _fields_ = [ ('w', ctypes.c_short), ('h', ctypes.c_short), ('x', ctypes.c_short), ('y', ctypes.c_short), ('a', ctypes.c_int), ('l', ctypes.c_short), ('t', ctypes.c_short), ('r', ctypes.c_short), ('b', ctypes.c_short), ('maxw', ctypes.c_short), ('maxh', ctypes.c_short)] h = ctypes.windll.kernel32.GetStdHandle(-11) b = CONSOLE_SCREEN_BUFFER_INFO() ctypes.windll.kernel32.GetConsoleScreenBufferInfo(h, ctypes.byref(b)) ctypes.windll.kernel32.SetConsoleTextAttribute(h, 10) chrs = string.ascii_letters + string.digits + string.punctuation chrs += ' ' * len(chrs) sz = len(chrs) try: while True: sys.stdout.write(chrs[random.randint(0, sz - 1)]) finally: ctypes.windll.kernel32.SetConsoleTextAttribute(h, b.a)
|....,,__ |_::;; ~"'ヽ | //^''ヽ,,) | i⌒" | ∀`) < 誰もいない きのこるならいまのうち |⊂ | ノ _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" |( ´∀`) < きのこ のこーのこ げんきのこ ♪ |(ノ |つ | | ⊂ _ ノ ""U _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" (´∀` )| < エリンギ まいたけ ブナシメジ ♪ ⊂| (ノ | | | ヽ _ ⊃ .U"" | | ミ | ミ サッ! | ミ |
range(1, 5) これがPythonはダメだよな
if __main__ にロジックを大量に書くとデバッグしにくくなるからやめなさい。
代わりに何か適当な関数を作って、ロジックはその中に置く。
if __main__ にはその関数への呼び出しを書いておけばいい。
http://www.artima.com/weblogs/viewpost.jsp?thread=4829 import sys import random import string import ctypes class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure): _fields_ = [ ('w', ctypes.c_short), ('h', ctypes.c_short), ('x', ctypes.c_short), ('y', ctypes.c_short), ('a', ctypes.c_int), ('l', ctypes.c_short), ('t', ctypes.c_short), ('r', ctypes.c_short), ('b', ctypes.c_short), ('maxw', ctypes.c_short), ('maxh', ctypes.c_short)] def main(): h = ctypes.windll.kernel32.GetStdHandle(-11) b = CONSOLE_SCREEN_BUFFER_INFO() ctypes.windll.kernel32.GetConsoleScreenBufferInfo(h, ctypes.byref(b)) ctypes.windll.kernel32.SetConsoleTextAttribute(h, 10) chrs = string.ascii_letters + string.digits + string.punctuation chrs += ' ' * len(chrs) sz = len(chrs) try: while True: sys.stdout.write(chrs[random.randint(0, sz - 1)]) finally: ctypes.windll.kernel32.SetConsoleTextAttribute(h, b.a) if __name__ == '__main__': main()
[1] 授業単元:QRコード変換 [2] 問題文: 打ち込んだテキストデータをQRコードの画像に変換するプログラムを作成せよ. (QRコードの規格は公開されているので,それを組み合わせて作ればよい. エラー訂正レベルを下げ,文字数を固定するなどして簡単なものから順に実装していけば良い.) [3] 環境 [3.1] OS: Windows 7 [3.2] 言語とバージョン: Python 2.5 以上 [4] 期限: 7/7 宜しくお願いします。
perlでの use strict; 機能をpythonでも実装せよ どうやるの?
自分の経験では color = green if status != good: colour = red display(status, color) みたいなのを書いて、えらい目にあったことがある。 動的すぎるのも考えものだわ。 strict とブロックスコープ、あと無名関数は Perl のほうがいいね。
以下の宿題が出ました。
いわゆる石取りゲーム
http://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A0 と同じ種類の問題だということはわかるのですが、このゲームの法則と
それをPythonで表現する方法がまるでわかりません。
どなたか、ご回答をいただければありがたいです。
[1] 授業単元:プログラミング入門
[2] 問題文:
2人のプレイヤーが以下のルールでゲームをする。
このゲームは、二人零和有限確定完全情報ゲームである。
任意の数字Nに対し、先手と後手のどちらが勝つかを判定するプログラムを
再帰を使用して作成せよ。
1 初期値Xが与えられる。
2 先手と後手は、交互にAかBのどちらかの方法を選び、Xを減少させていく。
A.Xから1を引く
B.Xを2で割る
3 自分のターンで自分が減少させた結果、Xnが1を下回ってしまったプレイヤーがゲームに負ける。
[3] 環境
[3.1] バージョン: Python3
[3.2] 言語: Python
[4] 期限:10月3日AM6:00
[5] その他の制限:特になし
>>332 山の個数が分かった時点で必勝か、必敗かがわかる?
と考えていいのかな。
>>333 山(N)が与えられた時点で、先手が勝ちか後手が勝ちかは決まるとのことです。
>>334 すみません。条件を書き忘れました。
この問題は数の範囲に小数点以下も含んでおります。
>任意の数字Nに対し 任意の数字Xに対し の間違いじゃない?
補足をさせてください。
例えば、N=5のとき、ありうる選択肢として以下の5パターンがありますが、
先手は<>の選択をすると負けてしまいますので、必ずイかウの勝利のパターンとなるように行動します。
したがって、N=5のときは先手が勝ちが決まっているということになります。
ア 先手Aで4、後手Aで3、先手<Aで2>、後手AでもBでも1、先手AでもBでも0.5<1 先手の負け
イ 先手Aで4、後手Aで3、先手Bで1.5、後手AでもBでも(0.5,0.75)<1 後手の負け
ウ 先手Aで4、後手Bで2、先手AでもBでも1、後手AでもBでも0.5<1 後手の負け
エ 先手<Bで2.5>、後手Aで1.5、先手はAでもBでも(0.5,0.75)<1 先手の負け
オ 先手<Bで2.5>、後手Bで1.25、先手はAでもBでも(0.25,0.6125)<1 先手の負け
>>336 Xの間違いです。すみません。。
>>338 X=5でした。
テンパっておりまして…すみません。
332の問題、期限切れみたいだけど添削お願いしたい
http://ideone.com/sWfE6 (1) 値を減少させる関数と勝敗判定の関数を書き出した
(2)
>>337 のパターン ア-オを assert 文で列挙
(3) 判定関数を再帰で実装
【 課題 】
再帰分割法を利用した迷路作成のプログラムを作ってください。
【 用語 】
再帰分割法
http://en.wikipedia.org/wiki/Maze_generation_algorithm#Recursive_division_method 【 期限 】
2012/11/16まで
【 Ver 】
OS:Windows8
Python2.x
【 補足 】
壁を#、道をスペースで表示してください。
よろしくお願いします。
そもそも「再帰分割法を利用した迷路作成」は 解く側から見て 「最初に経路の目星を付け易い」 という欠点があるよ
整数(1〜10程度でよい)を入力させ、魔方陣(縦横斜め全方向の和が等しい)の数列を表示せよ。 例にあるハイフンは調整のためであり、表示は無用とする。 入力例 1: 1 出力例 1: ---5---7---3 ---1---6---8 ---9---2---4 入力例 2: 2 出力例 2: --13--20--22---4---6 ---7--14--16--23---5 ---1---8--15--17--24 --25---2---9--11--18 --19--21---3--10--12 よろしくお願いします。
>347 入力が1のときには出力は3x3で 2のときには5x5だとすると 入力がnのときには出力は(2n+1)x(2n+1)でいいのかい?
>>347 結果が複数ある場合は全部表示するの?
それとも適当に見つかったものだけ表示すればいい?
>>348 それで良いです。
余力があれば偶数のもおながいします。
>>349 すみません。間違いです。
でも答えが判ってると面白く無いので。
>>350 出来れば全部でおながいします。
>>351 とりあえずそれで良いです。
余力があれば対角線以外の斜め合計?も一致するパターンのもおながいします。
宿題スレは終了 終了終了終了終了終了終了終了終了終了終了終了終了 終了終了終了終了終了終了終了終了終了終了終了終了 終了終了終了終了終了終了終了終了終了終了終了終了 終了終了終了終了終了終了終了終了終了終了終了終了
1 宿題の丸投げという行為はカンニングと同等。学則による処分の対象 2 丸投げした質問者もそれを知って回答した回答者も大学の単位認定業務の 妨害、すなわち偽計業務妨害 3 宿題の問題は著作物であり、それをアップローダやスレに投稿する事は 公衆送信権の侵害。うpを唆しているテンプレは著作権侵害の教唆 違法行為が前提で成り立つスレなので、次スレは立てずにこのスレで終了
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
任天堂のサイトの問題ですが
http://cp1.nintendo.co.jp/2012 $ python SimpleBarsTest.py
test_loop (__main__.testSimpleBars) ... ok
test_simple_rule (__main__.testSimpleBars) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
テストコードまでOKなんですが、
answerを出したのですが違っているようなんです。
この問題を解いた方がいましたら少し教えてもらえませんでしょうか。
今までC言語しかやったことなくて、Pythonは初めてです。よろしくお願いします。
【 課題 】
g(x_1,x_2,...,x_n)=f_a(X_a)f_b(X_b)...f_k(X_k)
と書けるとする.ただし,X={x_1,x_2,...,x_n},X_aやX_bはXの部分集合である.
確率伝播法(Sum-Product Algorithm)によって,周辺化関数の計算量が減少していることを示すプログラムをかけ.
ただし,計算量は(足し算を行う回数)と(掛け算を行う回数)の和とする.
また,関数g,f_a,f_b,...,f_kはプログラムの中で定義すること.
例:g=x(y+z),f_a=x,f_b=y+z などとプログラムに書き,その時の周辺化関数の計算量について調べる
ヒント:このプログラムにおいて,
入力:関数gやf_a
出力:確率伝播法を使う前の計算量&使ったあとの計算量
だが、計算量をはかる代わりに、確率伝播法を使ったあとの方が
「計算にかかった時間」が短ければそれで計算量が減少したことを示せる.
【 用語 】
簡単な定義と例はこちらで.簡単に作成しました.
https://docs.google.com/file/d/0BwsJZI6jzfNzMnV3dUVvazBGODA/ 【 期限 】期限:8/18
【 Ver 】Python2.3 か Python3.3 OS:Windows7
【 補足 】初心者なんでお願いします.Pyscripterというのを使っています.
>362 専門的なのでよく分からない。 Cで書いてくれたらPythonに焼き直すことができるかもしれない。
ちょっとどうすればいいかわからない課題出た助けて 【 課題 】 n個の変数列[x_1,x_2,...,x_n]を考える. x_1が取り得る値を適当に決める.x_1からx_nまですべての変数について行う. この時,iを与えた時の次のIの値を求めなさい: I=這這...杷(x_1,x_2,...x_n),ただし狽フ数はn-1個.x_iについてのみ和を 取らない. 例: f(x_1,x_2,x_3)=x_1 + x_2 ^ 2 + x_3 ^3 x_1 = [ 0,1,2 ] x_2 = [ 3,8 ] x_3 = [-5,10] i = 1 を与えたとき, I=(x_2)について(x_3)について f(x_1,x_2,x_3) = f(x_1,3,-5)+f(x_1,3,10)+f(x_1,8,-5)+f(x_1,8,10) = x_1 + 3^2 + (-5)^3 +x_1 + 3^2 + (10)^3 +x_1 + 8^2 + (-5)^3 +x_1 + 8^2 + (10)^3 =x_1 + 9 - 125 + x_1 + 9 + 1000 + x_1 + 64 - 125 + x_1 + 64 + 1000 = 3* x_1 + 1896 よって、 I = 3* x_1 + 1896 を出力させるようなプログラムを作って欲しい. 【 期限 】提出期限:9/1 00:00 【 Ver 】Python:2.7 OS:Windows 7 【 補足 】よろしくお願いします
すまん
>>365 だが,
I=4*x_1 +1896だったわ
【 課題 】 高さh、質量m、初速度vを入力して、物体の軌跡を計算し、グラフを描画(SVGファイルを出力)する。 例: 高さ30mの位置から質量1.0kgの球を鉛直下向きに4.9m/sで投げ上げた。 高さ=30 質量=1000 初速度=-4.9 グラフをSVGファイルに出力 【 Ver 】 Python:2 / ReportLab 【 期限 】 10月21日まで 【 補足 】 誰かお願いします。
鉛直下向きに投げ上げた 鉛直下向きに投げ上げた 鉛直下向きに投げ上げた 鉛直下向きに投げ上げた 鉛直下向きに投げ上げた
放物線にすらならんな 縦に一本線引けば正解じゃね?
やってみた from reportlab.graphics import renderSVG from reportlab.graphics.shapes import Drawing, Polygon from reportlab.lib import colors drawing = Drawing(640, 480) drawing.add(Polygon((320, 240, 320, 480), strokeColor=colors.red)) renderSVG.drawToFile(drawing, 'out.svg')
>>375 同じコードをrubyで書いたら比べ物にならない醜さなのでは?
python初めて数日だけど、チョット気に入った。 perlみたいに取って付けたオブジェクト指向じゃなて、初めからしっかりサポートしてる感じでいいね。 idleもいいよ、タブでメソッドがずらーーってでるからね。VBライクだね。
>>377 まるでruby使いにも良い書き手が居るかのような言い方w
ぱいそんそわそわ
フォロリクよろしく(^з^)-☆
ややちゃん♂
https://twitter.com/minwqgmg #ややちゃんかわいい
ややちゃんよりかわいいMTFなどいない
#百合原まこきもいしね
https://twitter.com/mako_yurigahara 【 課題 】ランダムに生成される、真上から見た水面のランダムな大きさの波紋を描きなさい。 【 Ver 】python2.7もしくはそれに対応するpygame 【 期限 】特にありませんが、どうか年内にはお願いしますm(-_-)m 【 補足 】特に指定はありませんが、イメージとしてElonaのスタート画面やGBAポケモンの雨の日の水面みたいな感じでいいと思います。 どうかご教示ください!
>>383 これはあなたへの宿題です。
自分でやってください。
漏れの宿題は別にあるから 君が手伝ってくれてもいいんだよ
>>388 そっちじゃ明らかに断られてるからマルチとは言えない
波紋とは、円の中心点に、石を落とした際、 円が外へ広がっていくことか? 一番内側の円1の半径が、20pxとして、 円2は40px、円3は60px、円4は80px、円5は100pxとする 0.5秒毎に描画する。各円は、3回まで描く タイミング(秒)と、描く円の番号 0.5 1 1.0 2 1.5 1,3 2.0 2,4 2.5 1,3,5 3.0 2,4 3.5 3,5 4.0 4 4.5 5
あれこれやってたら結構時間かかりましたが出来ました
errorって出てますが、pygameで走らせると動きます
採点お願いします!
http://ideone.com/ZBreYa もしももっとリアルな感じにしたり色を工夫したりできるようでしたらどなたかご指摘・ご修正お願いします
正規表現で <img から始まって/> で終わるその間の文字を抜き出すのってできますか? できるならば参考になる関数などを教えてください!!!!!
>>393 re.compile('^<img.*/>$')
>>394 ^<img.*/>$
^ は行頭指定だから、< が行頭
$ は行末指定だから、> が行末
これで良いのか?
行頭・行末に限定しないのなら、^, $ を削除しな
.* だと最長一致になるから .+? あたりの方がいい。
xと1以上の整数nを入力としてx^nを計算する時間計算量がO(logn)の再帰的アルゴリズムを求めよ nは必ずしも2のべきではない
test.txtには10000人分のテストの点数が記されている このファイルを使い テストの平均点を求め average.txtというファイルに平均点を書き込むを作成する python でよろしくおねがいします。
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 R9Z7J
このスレのフランス語版作れば 向こうの小学生達が喜ぶだろうな
anaconda初めました、質問お願いできませんでしょうか。 スパイダーを起動すると、セキュリティソフトから20回以上セキュリティ関係や色々な所にプロセスやレジストリキーを埋め込もうとしています。〜に送信しようとしていますって出るんですけど、これって普通ですか? プロンプトは何も出てきません、長文すいません、よろしくお願いいたします。
https://github.com/ayooshkathuria/pytorch-yolo-v3/blob/master/cam_demo.py このスクリプトを手元PCのカメラで自動検知させてる時に personが複数人表示された時にアラートを表示させるにはどうすればいいですか?
Version3.6で
openCVとかも入っておりバッチリ動作はします
各自が設定した問題やゲームについて、「条件分岐(if文)」、「反復処理(for文またはwhile文)」、「何かしらのデータ構造」、「関数」、 をすべて用いて、解を出力するプログラムを作成せよ。 注意: ・プログラムコードは100行以内におさめて、そのままコピーすれば教員TAが実行できるように記述すること ・コメント文(#を使う)でプログラム中の変数や関数の説明を行うこと ・何を入力し何を解くプログラムなのか必ず説明すること
>>401 これで大丈夫?
def exp(n, x, cash = 1):
cash = cash * n
if n ==1:
print cash
return
exp(n-1, x, cash)
exp(179, 1926)
3年前の夏に宿題だと質問者は卒業しているかも。 間に合えばいいんだが。。。 デジタル記録の弊害かもな。過去が鮮明に残り過ぎて時の経過感覚が鈍くなる。 ふと気がついたらあれから10年、みたいな。
matplotlibでグラフ書いたけど、y軸の目盛りを任意の値にするにはどうしたらよい? せめて最大値最小値は目盛りで記したい
質問です sagemathというpythonを利用した数式処理系についての質問です pythonには3d graphicsの“polygon3d”という関数が作りたい面のリストと点の座標のリストを与えるといわゆる“polygon”を作ってくれます しかしコレ第1引数の“面の指定”が鬱陶しいです 第2引数の点のリストの要素番号で指定しないといけません できれば“点そのもののリスト”で指定したいのです つまり↓ v= [A,B,C,D,E,F,G,H] #f = [[A,B,F,E],[B,C,G,F],[C,D,H,G]] # can't work f = [[0,1,5,4],[1,2,6,5],[2,3,7,6]] # work でコメントアウトしてるような指定がしたいのです つまり自分でpolygon3'みたいな関数で fig = polygons3d'( [[A,B,F,E],[B,C,G,F],[C,D,H,G], opacity=0.3,color = 'green') ) みたいな形で使えるものが作れないでしょうか? よろしくお願い致します
https://sagecell.sagemath.org/?z=eJxVkM-KgzAYxO-C7xDoQcWhVLvtnnKo_99BPLjWqqskEsXSt98vZhe6hISPyW8mQ26Ms61tVqnc8gRalWdb0ZsY_InJOxgYLf1vDrTmxsiQo_AoxI18ljBEfko7oZM2Iba1cVbeECFGgtTwlW0dHuQp94sMaYVSAzkymjRYIK8qdmBNLZyVPaUabcs4dKELPogLEOKKC00hzvjEdXf8skMX8FlOr06K5Xx3H2Ab5Fw3w_rip-MZjZykokCnU20rHG-3hHwaREt4aeoWuhGVNi1zxBXWfmhG0S4LD00Gd76muhl1gqtf9XWOd1x6-XRnJb_pzwYpuCPV2stO1TMFON4PquZrnA==&lang=sage&interacts=eJyLjgUAARUAuQ== A = vector([0,0,0])
B = vector([1,0,0])
D= vector([0,1,0])
E= vector([0,0,1])
(C,F,G,H) = (B+ D ,B+E,B+D+E,D+E)
v= [A,B,C,D,E,F,G,H]
f = [[0,1,5,4],[1,2,6,5],[2,3,7,6]]
fig1=polygons3d(f, v,opacity=0.3,color = 'green')
fig2=line3d([B,C,D,H,G,F,E,A,B,F,G,C],thickness=2,color='black')
(fig1+fig2).show(projection='orthographic')
2023/02/04 25:00 MASA ITO PAUL GILBERT 2023/02/04 25:05 HANGAR 18 MEGADETH 2023/02/04 25:14 DISSONANCE LOVEBITES 2023/02/04 25:31 SYMPTOM OF THE UNIVERSE BLACK SABBATH 2023/02/04 25:39 ENEMY OF GOD KREATOR 2023/02/04 25:55 GASLIGHT THE WINERY DOGS 2023/02/04 26:05 KILLING ME KILLING YOU SENTENCED 2023/02/04 26:18 MINE HALESTORM 2023/02/04 26:32 BATTLE FROM WITHIN CYHRA 2023/02/04 26:39 6:00 DREAM THEATER 2023/02/04 26:47 TAURUS HAKEN 2023/02/04 26:56 CALL OF THE NORTH FROZEN CROWN 2023/02/04 27:08 MEGALOMANIAC ASCENSION 2023/02/04 27:13 BLOOD OF EMERALDS GARY MOORE 2023/02/04 27:33 HOLIDAY ALTER BRIDGE 2023/02/04 27:37 FANGS (LIVE) OUTRAGE & OUTRAGEOUS PHILHARMONIC ORCHESTRA 2023/02/04 27:37 FANGS (LIVE) OUTRAGE & OUTRAGEOUS PHILHARMONIC ORCHESTRA 2023/02/04 27:42 TIMEZONE MANESKIN 2023/02/04 27:47 RISING TIDE RONNIE ATKINS 2023/02/04 27:52 MURDERER HELLOWEEN 2023/02/04 27:56 SAME OLD STORY STRYPER 2023/02/04 28:05 TWO WORLDS XANDRIA 2023/02/04 28:15 CARNAGE (LIVE) MAYHEM 2023/02/04 28:20 THE SCARECROW MYSTIC CIRCLE 2023/02/04 28:29 RIDING WITH THE ANGELS RUSS BALLARD 2023/02/04 28:33 MASTER BUILDER GONG 2023/02/04 28:42 THE GLORIOUS OM RIFF STEVE HILLAGE
read.cgi ver 07.7.23 2024/12/25 Walang Kapalit ★ | Donguri System Team 5ちゃんねる
lud20250211121414このスレへの固定リンク: http://5chb.net/r/tech/1258320456/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「Python の宿題ここで答えます Part 2YouTube動画>1本 ->画像>9枚 」 を見た人も見ています:・★★ Java の宿題ここで答えます Part 74 ★★ ・C/C++の宿題片付けます 160代目 ・【動画】JS「宿題の答え教えてくれたお礼です」乳首晒すも陥没乳首wwwwwwwwww ・C/C++の宿題片付けます 170代目 [無断転載禁止]&#169;2ch.net (86) ・BASICの宿題はお前にまかせた ・Pythonのお勉強 Part63 ・Pythonのお勉強 Part68 ・Pythonのお勉強 Part59 ・Pythonのお勉強 Part56 ・Pythonのお勉強 Part62 ・AI作りたいけど、CとC++とPythonのどれがいい? ・Pythonのお勉強 Part74 (810) ・くだすれPython(超初心者用) その38 ・くだすれPython(超初心者用) その40 ・くだすれPython(超初心者用) その39 ・Python単純すぎくそワロタwwww ・【まず1嫁】くだすれPython(超初心者用) その58 ・くだすれPython(超初心者用) その50【まず1嫁】 ・【まず1嫁】くだすれPython(超初心者用) その56 ・くだすれPython(超初心者用) その48【まず1嫁】 ・くだすれPython(超初心者用) その43【Ruby禁止】 ・くだすれPython(超初心者用) その41【Ruby禁止】 ・【悲報】山上徹也「神道系の宗教で韓国系を毒消しする」 ・私「ここ空いてますか」 女性「指定席券を買ってあります」 新幹線で、私は虚を突かれた思いがした ・「ここまで腐りきった言葉を知らない」元大阪地検トップ、レイプした人妻部下を脅して口止め…ひろゆきも「検察ヤバすぎ」と呆れ声 [知立あんまき★] ・Python初心者スレ ・python始めたいんだが ・Excel Python 質問スレ ・pythonに詳しいやつ来てくれ ・Kivy Pythonライブラリ ・大学でpythonってやつやるらしいんだが ・【TJDSB】高橋朱里のおっぱいがhosi ・アトリエかぐや HonkyTonk Pumpkin ・【GUI】Fletスレ【Python/Flutter】 ・javaとpythonってどっちが初学に向いてる? ・【python】課題出されたんだけどどう書けばいいの ・Python→Juliaと進みたい【株の自動売買】 ・Jython、Groovy、JRuby - どれが一番効率的? ・初めてココ来たけどpython人気なさ過ぎるだろ。 ・Pythonはプロのプログラマから嫌われてる言語だった ・【Python】スクリプト バトルロワイヤル48【pl,rb,php,js】 ・Eclipse統合M33【Java/C++/Ruby/Python/Scala】 ・Julia「いくぞ!」Python「合体!」R「ったい!」→ ・X JAPAN 【TOSHI伝説】貴方次第です ・PyQt5 Python (21) ・pythonを使ったyoutube 動画 (4) ・Python上げVBA下げしてる気持ち悪い奴ら (49) ・Pythonは大規模システム開発に適さないと嘘つく会社 (5) ・Eclipse統合M36【Java/C++/Ruby/Python/Scala】 [無断転載禁止]&#169;2ch.net (376) ・鬼滅の刃のプログラム ・初心者はとりあえずここ見とけ ・スレ立てるまでもない質問はここで 160匹目 ・スレ立てるまでもない質問はここで 158匹目 ・スレ立てるまでもない質問はここで 146匹目 ・スレ立てるまでもない質問はここで 146匹目 ・スレ立てるまでもない質問はここで 141匹目 ・スレ立てるまでもない質問はここで 152匹目 ・【PHP】下らねぇ質問はここに書き込みやがれ 3 ・スレを勃てるまでもないC/C++の質問はここで 24 ・【PHP】下らねぇ質問はここに書き込みやがれ 15 ・【PHP】下らねぇ質問はここに書き込みやがれ 13 ・【PHP】下らねぇ質問はここに書き込みやがれ 10 ・プログラミング未経験の文系の俺に就活アドバイス ・【想田和弘】日本に9条がなかったら北朝鮮の核やミサイル開発を止めれたのかよ。世界最強のアメリカにも止めれないって現実は無視かよ
13:29:28 up 50 days, 14:33, 3 users, load average: 62.07, 74.25, 75.45
in 0.056453943252563 sec
@0.056453943252563@0b7 on 030503