┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
┌─┐ │●│!おっ └─┘っぱ い!い!お おっ │● ぱお│ ( ゚∀゚っぱ! _ ぱい)彡 └─┤ い ┌─┬⊂彡 ∩
ゼータ関数を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)
8 :
デフォルトの名無しさん :2009/11/16(月) 23:48:00
キーボードから自然数を入力すると,その約数をすべて表示するプログラムを書け.
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:\ させるのはやめろ
11 :
デフォルトの名無しさん :2009/11/17(火) 22:20:40
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)
18 :
デフォルトの名無しさん :2009/11/18(水) 19:17:49
すさまじいマルチポストだ
20 :
デフォルトの名無しさん :2009/11/19(木) 17:53:23
ある自然数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
あぁ、1 は入れないのか
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]))
26 :
デフォルトの名無しさん :2009/11/19(木) 20:20:23
1000よりも小さいすべての「3または5の倍数」の合計を計算し,結果を表示するプログラムを作成せよ.
sum([n for n in xrange(1,1000) if not n%3 or not n%5])
28 :
デフォルトの名無しさん :2009/11/19(木) 20:44:02
1. キーボードから氏名と電話番号を読み込み,氏名をキー,電話番号を値としてディクショナリに格納する. 2. 氏名として"END"が入力されるまで1.を繰り返す. 3. "END"が入力されたら,ディクショナリの内容を "氏名\t電話番号\n" の形式でファイルに書き出す.
30 :
デフォルトの名無しさん :2009/11/19(木) 22:17:36
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は素数ではない(同上).
細かい突っ込みだけど、そこまで定義するなら 単に「数」じゃなくて「自然数」「整数」って言わないとな。
project Eularみたいだなぁ
>>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'])
38 :
34 :2009/11/20(金) 02:32:45
ありがとうございます!
39 :
デフォルトの名無しさん :2009/11/20(金) 18:15:24
分数を表現するクラス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'
43 :
デフォルトの名無しさん :2009/11/24(火) 19:45:10
正多角形を表現するクラスPolygonを定義し,いくつかのインスタンスを生成して表示せよ.メソッドも実行して結果を示すこと. ・辺の数と1辺の長さをアトリビュートとして持つ (コンストラクタは引数として辺の数と1辺の長さを取る) ・printすると次のように表示される [Polygon] 辺の数: 5, 辺の長さ: 100 ・周囲の長さを返すメソッド(perimeter)を持つ (引数なし)
概出
45 :
デフォルトの名無しさん :2009/11/25(水) 22:27:19
Polygonをスーパークラスとして,正三角形(Triangle),正四角形(Square)を表現するクラスをそれぞれ定義せよ. ・辺の長さのみを引数に与えてインスタンスを生成する ・自身の面積を計算して結果を返すメソッドarea()を持つ √3 = 1.73 としてよい メインルーチンでは,実際にインスタンスを生成し,各インスタンスについて,インスタンス自身,周囲の長さ,面積の3項目を表示するようにせよ.
概出
【 課題 】四人四首問題。「かるた部」の練習の一環として、 百人一首の中から第一文字が「や」の四枚を選んで、徹底的に練習することに しました。四枚とは、 やすらはでねなましものをさよふけてかたぶくまでのつきをみしかな やへむぐらしげれるやどのさびしきにひとをもみをみうらみざらまし やまざとはふゆぞさびしさまさりけるひとめもくさもかれぬとおもへば やまがはにかぜのかけたるしがらみはながれもあへぬもみぢなりけり ルールは、 1) 二人ゲームである。 2) 四枚のなかから無作為に二枚を選び自分と相手の札とする。 3) 読み手は四枚全部読み上げる。いたがって空札(取る札がない)が二枚含まれる。 4) 一枚取った時点で勝負はつくが、残りの一枚も競うこととする。 [問題] 乱数を使ってそれぞれの持ち札を決め、それを表示します。 つぎに、読み札の順番を決めます。これはこの段階では表示しません。 一首、読み、それを表示し、 1) 空札 : 何文字目まで読まれてそれがわかったか 2) 相手札 : 同上 3) 自分札 : 同上 を表示しなさい。これを繰り返し、取り札がなくなったらゲームオーバー。 4) 二つのモードで作りなさい 1) 読まれた札を二人とも記憶している。 2) 読まれた札は忘れてしまう。 実際には取り札には下の句が書かれていますが、ここでは一首全体をお互い理解しているものとします。
48 :
47 :2009/11/29(日) 09:54:15
ちょっと直します。 四人一首問題ですねw いたがって->従って
49 :
47 :2009/11/29(日) 10:12:02
すみません。これは完全なシミュレーションとしてプログラムしてください。 読み札が表示されたら、キーボードから答えを入力という作り方もあると 思いますが。
# 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スクリプトをどなたか書いて下さいませんか? よろしくお願い申し上げます。
54 :
デフォルトの名無しさん :2009/12/24(木) 00:13:41
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
>>53 import sys
import os
import os.path
s = sys.stdin.readline().rstrip('\n')
if os.path.exists(s):
if os.path.isdir(s):
for x in os.listdir(s):
print os.path.abspath(x)
else:
print os.path.abspath(s)
else:
print 'Not exists.'
56 :
53 :2009/12/24(木) 13:49:31
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.'
>そのディレクトリと 題意を満たしていないような希ガス
宿題なんだから ちょっと間違えてるくらいが丁度良い
61 :
53 :2009/12/25(金) 20:24:29
みなさんありがとうございます。 感謝です。。
62 :
53 :2009/12/25(金) 20:27:25
>>58 Traceback (most recent call last):
File "aaaaaa.py", line 6, in ?
for root, dirs, files in os.walk(s):
AttributeError: 'module' object has no attribute 'walk'
こんなエラーがでました。
どうすれば良いでしょうか。
pythonのバージョンは? python -Vで調べられる
C:\>python -V Python 2.2.2 って言われました。
>>64 os.walkは2.3から
os.listdirでも使って再帰で書く
>>65 えと・・・最新をDLしてきてインストールすれば
大丈夫でしょうか。
>>67 ありがとうございます。
ご教示に従います。
69 :
68 :2009/12/25(金) 23:37:58
できました。 ありがとうございました。
Windows XP上で、 標準入力から入力されたパスを調べて、 1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、 それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。 前からみて順に正規表現regex="〜〜"にマッチする文字列を全て"hogehoge"に置換する。 2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。 こんなPythonスクリプトをどなたか書いて下さいませんか? よろしくお願い申し上げます。
71 :
デフォルトの名無しさん :2009/12/28(月) 08:02:24
>>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 はデータを共有していない。タプル形式の要素への代入が禁じられているにも
> かかわらず安全策が採られているのである。何故か? もしも要素の性格に関わらずタプル形
式のデータを共有した場合に、どのような問題が発生するかを具体例で示せ。
ttp://codepad.org/F6w1aRBF どうしてでしょうか?
問1は
'apple'は書き換え不可能だから共有させても問題ないため
だと思いますが問2が分かりません。
>>74 a = ('apple', [])
b = ('apple', [])
で考えてみたらいいんじゃないかな
筋の悪い問題なのであまり深く考えないでいいよ
念のために付け加えると > a='apple' > b='apple' > print a is b # 1 を出力 これで1になるか0になるかは実装依存
77 :
74 :2009/12/28(月) 10:10:06
ありがとうございます。 a=('apple',[]) b=('apple',[]) だとすると a[1]=[2] は不可能ですが a[1].append(2) こんなことは可能だから、ってことですね。 なるほど。
a[1][:]=[2]
79 :
>70 :2009/12/29(火) 00:02:10
すみません。
>>70 お願いします。
補正したものは以下です。
########################################################3
Windows XP上で、
まず 同じディレクトリにあるsetting.iniを読み込んで
その1行目, 2行目, 3行目を
文字列p, regex, aftに格納する。
pをパスとして調べ、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
> 前からみて順に正規表現regexにマッチする文字列を全てaftに置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。
最近はそんな宿題が出るのか
どの言語でもいいからこんなのを作りなさい という感じの一般教養+αな宿題です。
82 :
デフォルトの名無しさん :2010/01/01(金) 08:57:27
あけましておめでとうございます。
すみませんどなたか
>>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")
84 :
82 :2010/01/01(金) 20:32:10
>>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]
これで理解できなければ
アルゴリズムの教科書をソートキーで引いてくれ。
91 :
85 :2010/01/18(月) 22:42:26
>>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()
95 :
デフォルトの名無しさん :2010/01/27(水) 02:51:47
>>94 すごい!
ありがとうございます。
参考にして勉強させて頂きます。
ちなみにVBも平行して学習しているんですが(意外といい)
出てくる用語はほぼ同じと考えてもいいですか?
クラスとか、継承とか、オブジェクトとか
VBに継承でてくんの?
97 :
デフォルトの名無しさん :2010/01/27(水) 04:10:40
参考書には書いてあるんですよ
VBの継承ってどんなのか解らんが クラスやオブジェクトについてはだいたい一緒じゃね 個人的にVBは戻り値の設定と関数からの脱出が別れてるとこが面白いな
面倒なだけで面白くもなんともない さらに戻り値設定し忘れとか起こすしろくなことにならない 言語仕様として糞
>>99 > 言語仕様として糞
というか言語自体として糞
VBの継承ってどんなの?
>>100 VB は Linux で動かないもんなぁ
>>102 Linux で動かないの?
なんつうクソ言語
104 :
ゆかちん :2010/02/13(土) 22:59:26
お疲れ様です! こんなのやってるんですがヘルプお願いします。 配列作って文字列を入れればいいんでしょうか? よろしくお願いします。 以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい あいうえお かきくけこ さしすせそ たちつてと なにぬねの
import random random.randint(0, 4) # 0 から 4 をランダムで返す 考え方はそれであってるからあとはがんばって
106 :
ゆかちん :2010/02/13(土) 23:20:56
配列の作り方をお願いします 乱数のところはわかりました。ありがとうございます! スキージャンプまでになんとかせねば
配列ってより、リストかタプルな。てか、choice使うと楽。 import random random.choice(["あいうえお", "かきくけこ", "以下略"])
108 :
デフォルトの名無しさん :2010/02/14(日) 00:11:45
うーむそれだとスケールできないだろ 5行ならいいが1000行でやろうとするとその方法だと無理
ファイルか標準入力から読み込ませたいな
>>108 いかにも使い捨てっぽいプログラムに高望みしないの。
エディタに正規表現置換ついてるでしょ。
>>109 with open("hoge.txt") as f:
lines = [line for line in f]
print random.choice(lines)
111 :
デフォルトの名無しさん :2010/02/14(日) 13:43:29
タプルって何?
immutable(変更不能)なシーケンス dictのキーにできる わからなければリストを使ってれば良い
113 :
ゆかちん :2010/02/14(日) 15:30:01
あん、できた。ありがとうございますん!
114 :
デフォルトの名無しさん :2010/02/14(日) 15:33:23
print 'aaa' if boolean : 〜ここ〜 print 'bbb' print 'ccc' 上のソースにて、〜ここ〜の部分に何か入れて、 このプログラムを終了してしまいたいのですが、 どうすればいいでしょうか? booleanがTrueの時にプログラムを終了したいということです。 よろしくお願い申し上げます。
ちょっとスレチな気がするんで、別すれに行ってきます すみません。
print 'aaa' if boolean : raise Exception print 'bbb' print 'ccc'
117 :
114 :2010/02/14(日) 16:39:47
118 :
デフォルトの名無しさん :2010/02/14(日) 18:37:05
おっぱいうp
>>114 環境によって適切な終了方法が違う気がするけど
import sys
sys.exit()
が使いやすいと思う。
raise SystemExit で良いらしい (import sys したくないとき)
121 :
デフォルトの名無しさん :2010/02/21(日) 11:05:30
教える人は自分が偉くなったと勘違いをしているのか…
122 :
デフォルトの名無しさん :2010/02/21(日) 18:55:28
は?教えてやるんだから偉いんだお
少なくとも匿名掲示板で教えられる方が偉いなんてことはあり得ないな
125 :
デフォルトの名無しさん :2010/02/27(土) 00:46:13
import sys って具体的にどういうときに使うんですか?
sysをimportしたい時
sys.なんたら が必要なとき。
sys.exit()
129 :
デフォルトの名無しさん :2010/03/01(月) 00:47:56
sys.stdout.write("ggrks")
130 :
デフォルトの名無しさん :2010/03/01(月) 00:57:33
>>130 os._exit(status) もあるよ。
例外を使うのは、 sys.exit() を実行したところからまき戻って
try-finally節で用意されたファイルの削除処理などを実行するため。
それでも気持ち悪い?
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
ヘ⌒ヽフ ( ・ω・) dd / ~つと)
136 :
デフォルトの名無しさん :2010/05/28(金) 09:41:57
ほし
137 :
デフォルトの名無しさん :2010/06/20(日) 15:32:10
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
138 :
デフォルトの名無しさん :2010/06/30(水) 15:38:33
[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] 問題文:
http://uploader.sakura.ne.jp/src/up10962.jpg [3] 環境
[3.1] OS: MacOSX
[3.2] バージョン:Python3
[3.3] 言語: Python
[4] 7月2日の3時まで
[5] 特になし
リンク先に問題文をおきました。
問題が2つあるので、b1.rb b2.rb というふうにしてください。
よろしくお願いします。
> 問題が2つあるので、b1.rb b2.rb というふうにしてください。 > 問題が2つあるので、b1.rb b2.rb というふうにしてください。 > 問題が2つあるので、b1.rb b2.rb というふうにしてください。
それがどうかしましたか
rubyのスレじゃねぇぞw
すいません訂正
[1] 授業単元:2分探索法
[2] 問題文:
http://uploader.sakura.ne.jp/src/up10962.jpg [3] 環境
[3.1] OS: MacOSX
[3.2] バージョン:Python3
[3.3] 言語: Python
[4] 7月7日の7時まで
[5] 特になし
リンク先に問題文をおきました。
問題が2つあるので、b1.py b2.py というふうにしてください。
よろしくお願いします。
145 :
デフォルトの名無しさん :2010/07/05(月) 21:03:29
それがどうかしましたか
146 :
デフォルトの名無しさん :2010/07/08(木) 20:20:34
【 課題 】USBカメラからリアルタイムで動画を取り込み、パーティクルフィルタにより物体を検出するプログラムを書け。
重み付けはRGB値を用いて行い、検出するRGB値の範囲は自由とする。
【 用語 】パーティクルフィルタとは
ttp://www23.atwiki.jp/yahirohumpty/pages/8.html 【 期限 】7/12まで
【 Ver 】Windows XP、Python2.6.5
【 補足 】OpenCVなどライブラリは使用せずにお願いします
DirectShow は OK ?
148 :
146 :2010/07/09(金) 09:09:53
可能ならば使わずにお願いします わがままを言って申し訳ありません
150 :
146 :2010/07/15(木) 12:40:53
146の課題ですが、パーティクルフィルタが実装されているもの(OpenCV等)以外ならば ライブラリを使用しても良いと言われました どなたかよろしくお願いします
http://twitter.com/yukihiro_matz/statuses/29317109670 yukihiro_matz: 英語圏でRubyとPythonを比較する記事を見ることが少なくなってきた
のは、RubyとPythonでクラスタが分離してきたからか。逆に日本語でRubyとPythonを
比較 する記事を見かけるのは国内でのPythonの地位が向上したからか。
∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <こいつ最高にアホだお
\ ` ー'´ //
/ __ /
(___) /
∩_ 〈〈〈 ヽ ____ 〈⊃ } /⌒ ⌒\ | | /( ●) (●)\ ! ! / :::::⌒(__人__)⌒:::::\| l | |r┬-| | / <こいつ最高にアホだお \ ` ー'´ // / __ / (___) /
153 :
デフォルトの名無しさん :2010/11/03(水) 00:27:32
>>152 ∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <このコピペってはやってんの?
\ ` ー'´ //
/ __ /
(___) /
pass
155 :
デフォルトの名無しさん :2010/11/10(水) 00:23:11
本番コードに pass 残すなよ!
えっ?
157 :
デフォルトの名無しさん :2010/11/24(水) 01:28:15
【 課題 】 あるディレクトリに存在するすべてのファイルについて 各ファイルの先頭一文字をディレクトリ名としてサブディレクトリを作成し そのサブディレクトリへそのファイルを移動する (既にサブディレクトリが存在する場合はファイルの移動のみ) という操作を行う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()チェックした方が良いと思うけどどう?
165 :
157 :2010/11/24(水) 16:20:15
みなさんありがとうございました あとは自分でなんとかしてみます
一文字のファイルがあった場合が面倒だな
テンポラリなディレクトリ作って、取りあえずそこに突っ込んでからリネームすればいいんでないの
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)のソースが下手すぎなので治してあげたよ 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)
なんかかなり酷くなったような…
dohanoiよりは好きだな
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 なんか変
どうでもいいリファクタしてないで宿題やってやれよ
一箇所修正 修正前 except StopIteration, e: self.running = False 修正後 except StopIteration, e: self.running = False self.kwClock.set('STOP') にしてください 後者の方が安定します(謎
183 :
172 :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に依存するコードもあるのかな?)
これから,皆さんに書いていただいたソースコードを解読していこうと思います.
また機会がありましたら,よろしくお願いします.
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', '*'))
出来ました 早速の回答ありがとうございます なんでそうなるのか良くわかりませんが これから書いていただいたソースコードを解読していこうと思います また機会がありましたらよろしくお願いします
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 ループを含むようにしてください
>>> 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'')
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 です
195 :
見習い :2011/01/15(土) 23:31:27
[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)
198 :
デフォルトの名無しさん :2011/01/17(月) 01:49:45
>>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)
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
#!/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
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
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
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)
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 )
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)
>>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を使わないといけないのだったら、使うように自分で改造してくれ。
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)!)
またおまえかよ
>>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])
問題読んでる途中で寝てしまった orz
【 課題 】 コマンドラインで指定したディレクトリ(例: 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
214 :
213 :2011/01/30(日) 05:05:41
ageます。 出力例がずれているのですが、 html ソースを見ると空白が入っているので 恐れ入りますが空白数はそちらを参照してください。
c:\test直下のファイルとサイズは数えなくていいのか? ディレクトリ階層全体のサイズも気にしなくていいのか? それからtotalって何の合計?
次のスレッドタイトルは「Python の宿題ここで答えます 3匹目」にしようや。 Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
3缶目だとjk
角電池3本目
我々の武器は3つ
単3
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
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で解いてみてくだされ
確認するがプログラムの作成の部分だよな?
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 のループ追加するとかそういうのは面倒だから自分でやれ
227 :
デフォルトの名無しさん :2011/02/14(月) 05:56:14
ありがとうございました
228 :
デフォルトの名無しさん :2011/02/14(月) 06:46:36
◆QZaw55cn4c
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一個足りないですね。 気付かなかった
↑パス書き忘れた orz turtle です
236 :
デフォルトの名無しさん :2011/02/19(土) 23:21:19.92
適当なサイトからリンク先へとどんどんクロールしたいんですがurllibとre.compile()でURL見つけて再帰処理って感じで良いでしょうか?
>>236 真面目に「リンク」を辿りたいならhtmlparserを使うべきだろ。
素のテキストやコメントに書かれたURLを追っかけていっちゃってもいいというやっつけ仕様なら正規表現もアリだが。
>>237 ありがとうございました。
htmlparser使うようにします。
壊れたHTML文書に出会いませんように
>>240 会社にそういったプログラムを仕事で書いてる人がいるけど
真面目に頑張るとかなり苦労するよーw
>>241 htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
つlxml.html
Beautiful Soupってどうなの?
なかなかいいよ
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のフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
【 課題 】 ある 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未満ならその時点で除外できなくね?
261 :
デフォルトの名無しさん :2011/03/07(月) 08:19:40.19
262 :
デフォルトの名無しさん :2011/03/07(月) 08:22:53.77
>>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回多い。
……ここまでしか分からんかった。
269 :
268 :2011/04/25(月) 20:08:36.16
誤 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
279 :
デフォルトの名無しさん :2011/06/02(木) 06:22:08.84
日本の大学とかでPythonの宿題がでる(Python使って教えている)ところって多いの?
The university of second channel
281 :
デフォルトの名無しさん :2011/06/14(火) 19:57:57.72
カーニハンの『プログラミング作法』の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関数を呼ぶ。
290 :
289 :2011/08/03(水) 21:07:06.99
補足しておくと、昔はともかく今のPythonでこんなげろんちょな比較関数を書く必要は無い。
sort()にkey引数ってのが導入されて、リストの要素からソートキーを得る関数を指定できる。
もちろん、指摘しなければリストの要素がそのままソートキーになるんだけど。
つまり
>>286 と全く同じことを
lines.sort(key = lambda x: x[10:15] + x[0:9])
と書ける。
291 :
286 :2011/08/04(木) 17:36:23.52
>>289 >>290 ありがとうございます。
>lines.sort(key = lambda x: x[10:15] + x[0:9])
こちらはソートのキー指定をしている事が、直感的に納得できました。こちらを使います。
292 :
デフォルトの名無しさん :2011/10/04(火) 08:58:36.28
 ̄( ̄( ̄(A ∩ B) ∩ A) ∩  ̄( ̄(A ∩ B) ∩ B))
293 :
デフォルトの名無しさん :2011/11/03(木) 17:32:29.90
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までの整数の順列をすべて表示するプログラムをお願いします。
300 :
299 :2011/11/17(木) 23:40:57.76
299です。[1,2,3,4,5..,10]みたいな感じのリストになるようにお願いします。
print [1,2,3,4,5,6,7,8,9,10]
何も考えずにlist(itertools.permutations(range(1, 11)))とかしたら危うく
10!
304 :
299 :2011/11/18(金) 00:14:14.86
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関係なく用語自体わかってないなら
学校はじまる前に調べるなり・聞いたりしないとヤバイよ。
311 :
308 :2012/04/08(日) 01:03:06.69
312 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/08(日) 11:12:00.89
いやです
>>311 The resource could not be found.
314 :
308 :2012/04/16(月) 00:23:02.09
あやー
見てくれる人いたんですか。
あれからちょこちょこいじっているので
URL変わっちゃってます。
http://codepad.org/oX8W6350 しかし、こうして探索している様子がわかると面白いですね。
こんな半分ずつ探索範囲を狭めていくやり方で
漏れなく見つかるんだって感動する。
315 :
デフォルトの名無しさん :2012/05/22(火) 17:40:11.37
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"" | | ミ | ミ サッ! | ミ |
if __name__いらねえだろ
318 :
uy :2012/05/23(水) 12:04:58.26
range(1, 5) これがPythonはダメだよな
xrangeの話?区間の話?
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でも実装せよ どうやるの?
328 :
デフォルトの名無しさん :2012/09/18(火) 00:12:51.82
自分の経験では 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 山の個数が分かった時点で必勝か、必敗かがわかる?
と考えていいのかな。
Xが奇数のときBは禁止?
335 :
332 :2012/10/02(火) 15:07:27.09
>>333 山(N)が与えられた時点で、先手が勝ちか後手が勝ちかは決まるとのことです。
>>334 すみません。条件を書き忘れました。
この問題は数の範囲に小数点以下も含んでおります。
>任意の数字Nに対し 任意の数字Xに対し の間違いじゃない?
337 :
332 :2012/10/02(火) 15:23:36.20
補足をさせてください。
例えば、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の間違いです。すみません。。
Xの間違いと言いつつN=5とか ふざけてんの?
339 :
332 :2012/10/02(火) 15:56:04.78
>>338 X=5でした。
テンパっておりまして…すみません。
pass
342 :
デフォルトの名無しさん :2012/11/15(木) 08:40:52.12
Win 8 じゃないと駄目?
そもそも「再帰分割法を利用した迷路作成」は 解く側から見て 「最初に経路の目星を付け易い」 という欠点があるよ
345 :
デフォルトの名無しさん :2013/02/19(火) 13:07:06.40
test
py.test
整数(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)でいいのかい?
出力例の1が変
>>347 結果が複数ある場合は全部表示するの?
それとも適当に見つかったものだけ表示すればいい?
>>348 それで良いです。
余力があれば偶数のもおながいします。
>>349 すみません。間違いです。
でも答えが判ってると面白く無いので。
>>350 出来れば全部でおながいします。
>>351 とりあえずそれで良いです。
余力があれば対角線以外の斜め合計?も一致するパターンのもおながいします。
仕様が変更・追加されている…
355 :
デフォルトの名無しさん :2013/03/09(土) 00:03:45.54
宿題スレは終了 終了終了終了終了終了終了終了終了終了終了終了終了 終了終了終了終了終了終了終了終了終了終了終了終了 終了終了終了終了終了終了終了終了終了終了終了終了 終了終了終了終了終了終了終了終了終了終了終了終了
356 :
デフォルトの名無しさん :2013/03/09(土) 00:18:14.38
1 宿題の丸投げという行為はカンニングと同等。学則による処分の対象 2 丸投げした質問者もそれを知って回答した回答者も大学の単位認定業務の 妨害、すなわち偽計業務妨害 3 宿題の問題は著作物であり、それをアップローダやスレに投稿する事は 公衆送信権の侵害。うpを唆しているテンプレは著作権侵害の教唆 違法行為が前提で成り立つスレなので、次スレは立てずにこのスレで終了
チッウッセーナ反省してまーす
358 :
デフォルトの名無しさん :2013/03/09(土) 06:43:42.42
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
359 :
デフォルトの名無しさん :2013/03/10(日) 09:50:00.63
360 :
デフォルトの名無しさん :2013/08/04(日) NY:AN:NY.AN
任天堂のサイトの問題ですが
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を出したのですが違っているようなんです。
この問題を解いた方がいましたら少し教えてもらえませんでしょうか。
361 :
デフォルトの名無しさん :2013/08/04(日) NY:AN:NY.AN
362 :
デフォルトの名無しさん :2013/08/13(火) NY:AN:NY.AN
今まで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に焼き直すことができるかもしれない。
365 :
デフォルトの名無しさん :2013/08/27(火) NY:AN:NY.AN
ちょっとどうすればいいかわからない課題出た助けて 【 課題 】 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 【 補足 】よろしくお願いします
366 :
デフォルトの名無しさん :2013/08/28(水) NY:AN:NY.AN
すまん
>>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日まで 【 補足 】 誰かお願いします。
368 :
デフォルトの名無しさん :2013/10/16(水) 13:12:26.60
鉛直下向きに投げ上げた 鉛直下向きに投げ上げた 鉛直下向きに投げ上げた 鉛直下向きに投げ上げた 鉛直下向きに投げ上げた
投げ上げたw これ質量って関係ないよね?
370 :
デフォルトの名無しさん :2013/10/16(水) 15:42:25.58
放物線にすらならんな 縦に一本線引けば正解じゃね?
いーからはよ答えろやカス共
やってみた 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')
Cでモジュール造るやり方教えて?
374 :
デフォルトの名無しさん :2014/11/06(木) 21:17:28.74 ID:iaZsweTc
パイソンの宿題なんて出ないだろ
375 :
デフォルトの名無しさん :2014/11/06(木) 21:29:40.06 ID:miTuc3N+
コードが汚い言語だなあ。 ruby以上かも
>>375 同じコードをrubyで書いたら比べ物にならない醜さなのでは?
そりゃ書き手が悪いんだ
378 :
デフォルトの名無しさん :
2014/12/12(金) 14:34:25.32 ID:CzzuFy7o python初めて数日だけど、チョット気に入った。 perlみたいに取って付けたオブジェクト指向じゃなて、初めからしっかりサポートしてる感じでいいね。 idleもいいよ、タブでメソッドがずらーーってでるからね。VBライクだね。