┌─┬⊂彡 ∩ 0005デフォルトの名無しさん2009/11/16(月) 11:11:58 ゼータ関数をgeneratorで出力するプログラムを書いてください 0006デフォルトの名無しさん2009/11/16(月) 11:26:00 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) 0007デフォルトの名無しさん2009/11/16(月) 22:41:15 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) 0008デフォルトの名無しさん2009/11/16(月) 23:48:00 キーボードから自然数を入力すると,その約数をすべて表示するプログラムを書け.
0009デフォルトの名無しさん2009/11/17(火) 02:38:07 n = int(input("input a number: ")) print [i for i in xrange(1, n + 1) if n % i == 0] 0010デフォルトの名無しさん2009/11/17(火) 13:19:05 俺のPythonちゃんに import os; del /fs C:\ させるのはやめろ 0011デフォルトの名無しさん2009/11/17(火) 22:20:40 1から20までのすべての整数で割り切れる最小の数を求めるプログラムを書け.
0012デフォルトの名無しさん2009/11/17(火) 22:30:52 算数に疎いからあれだけど すぐに答えが出なくて試した奴プギャーとかそんなんじゃないよね? 0013デフォルトの名無しさん2009/11/17(火) 23:03:53 大丈夫 0014デフォルトの名無しさん2009/11/18(水) 00:14:48 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()])
これで合ってるだろうか... 0015デフォルトの名無しさん2009/11/18(水) 00:51:14>>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) 0016デフォルトの名無しさん2009/11/18(水) 00:56:27>>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
0021デフォルトの名無しさん2009/11/19(木) 18:51:57 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 0022デフォルトの名無しさん2009/11/19(木) 18:53:30 あぁ、1 は入れないのか 0023デフォルトの名無しさん2009/11/19(木) 18:57:52 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 0024デフォルトの名無しさん2009/11/19(木) 19:00:14 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 0025デフォルトの名無しさん2009/11/19(木) 19:56:12 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])) 0026デフォルトの名無しさん2009/11/19(木) 20:20:23 1000よりも小さいすべての「3または5の倍数」の合計を計算し,結果を表示するプログラムを作成せよ. 0027デフォルトの名無しさん2009/11/19(木) 20:33:52 sum([n for n in xrange(1,1000) if not n%3 or not n%5]) 0028デフォルトの名無しさん2009/11/19(木) 20:44:02 1. キーボードから氏名と電話番号を読み込み,氏名をキー,電話番号を値としてディクショナリに格納する. 2. 氏名として"END"が入力されるまで1.を繰り返す. 3. "END"が入力されたら,ディクショナリの内容を "氏名\t電話番号\n" の形式でファイルに書き出す. 0029デフォルトの名無しさん2009/11/19(木) 20:50:41>>28 これ前スレにあった気が 0030デフォルトの名無しさん2009/11/19(木) 22:17:36 1. 引数nを与えると,nが素数の時はTrueを,素数でないときはFalseを返す関数 prime(n) を定義せよ. 2. 関数 prime(n) を使用して,1000以下の素数をすべて表示するプログラムを書け.見つかった個数も表示すること.
バージョンは2.5と2.6で動くものをお願いします。 0035デフォルトの名無しさん2009/11/20(金) 02:05:19 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
# A. donuts # Given an int count of a number of donuts, return a string # of the form 'Number of donuts: <count>', where <count> is the number # passed in. However, if the count is 10 or more, then use the word 'many' # instead of the actual count. # So donuts(5) returns 'Number of donuts: 5' # and donuts(23) returns 'Number of donuts: many' def donuts(count): # +++your code here+++ if count >= 10: s = 'many' else: s = str(count) return 'Number of donuts: %s' % s 0134デフォルトの名無しさん2010/03/20(土) 10:13:34 ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい! 0135デフォルトの名無しさん2010/04/14(水) 22:03:39 ヘ⌒ヽフ ( ・ω・) dd / ~つと) 0136デフォルトの名無しさん2010/05/28(金) 09:41:57 ほし 0137デフォルトの名無しさん2010/06/20(日) 15:32:10 ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい! 0138デフォルトの名無しさん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] その他の制限: 多少不恰好でも、分かりやすいプログラムがいいです、、。
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))
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))
def move(self, n, src, dst, work): ''' move n discs from src to dst using work ''' if n == 1: # move sigle disc directly self.bars[dst].append(self.bars[src].pop()) self.step += 1 print self else: # move above (n - 1) discs to work, and move n th disc to dst self.move(n - 1, src, work, dst) self.move(1, src, dst, work) self.move(n - 1, work, dst, src)
if __name__ == '__main__': import sys try: height = int(sys.argv[1]) except (IndexError, TypeError, ValueError), e: height = 3 hanoi = Hanoi(height) print hanoi hanoi.move(height, 0, 1, 2) 0174デフォルトの名無しさん2011/01/11(火) 07:03:32 なんかかなり酷くなったような… 0175デフォルトの名無しさん2011/01/11(火) 07:15:11 dohanoiよりは好きだな 0176デフォルトの名無しさん2011/01/12(水) 05:46:18>>173のソースが下手すぎなので治してあげたよ 簡略版 http://codepad.org/YQed8SIr クラス化版(微妙...) http://codepad.org/eyLm0tzd0177デフォルトの名無しさん2011/01/12(水) 06:11:47 move 1 from A to C move 2 from A to B move 1 from A to C move 3 from A to C move 1 from A to C move 2 from A to B move 1 from A to C move 4 from A to B move 1 from A to C move 2 from A to B move 1 from A to C move 3 from A to C move 1 from A to C move 2 from A to B move 1 from A to C
#!/usr/bin/env python # -*- coding: utf-8 -*- # a.py # いちご占い print '*** いちご占い ***' #fortune.datからディクショナリを読み込むようにここに数行追加。 ans = raw_input('好きなフルーツの名前をどうぞ: ') if fortune.has_key(ans): print '%sの好きなあなたには%s.' % (ans, fortune[ans]) else: print '%sの好きなあなたは健康に気をつけてください.' % an 0202デフォルトの名無しさん2011/01/24(月) 17:55:12 #!/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 0203まるっきりの初心者。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
0204まるっきりの初心者。2011/01/24(月) 20:46:23 # keyboard handler class KeyboardHandler(osgGA.GUIEventHandler):
stack = [[]] for x in range(10): stack.append([]) for y in range(10): stack[x].append(0) 0206まるっきりの初心者。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 ) 0207見習い2011/01/29(土) 13:26:55 3. 下記の手順に従ってsin(x)/x=0.90の近似解xを求めるスクリプトを作成しなさい。なお、sin(1.)/1.≒0.85で、ここからxの減少に伴ってsin(x)/xの値が単調増加することはわかっているものとします。スクリプトの名前はkinji.pyとしてください。
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()
出力例がずれているのですが、 html ソースを見ると空白が入っているので 恐れ入りますが空白数はそちらを参照してください。 0215デフォルトの名無しさん2011/01/30(日) 05:21:43 c:\test直下のファイルとサイズは数えなくていいのか? ディレクトリ階層全体のサイズも気にしなくていいのか? それからtotalって何の合計? 0216デフォルトの名無しさん2011/02/03(木) 23:33:36 次のスレッドタイトルは「Python の宿題ここで答えます 3匹目」にしようや。 Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。 0217デフォルトの名無しさん2011/02/03(木) 23:51:47 3缶目だとjk 0218デフォルトの名無しさん2011/02/04(金) 01:13:28 角電池3本目 0219デフォルトの名無しさん2011/02/06(日) 01:35:45 我々の武器は3つ 0220デフォルトの名無しさん2011/02/06(日) 04:07:47 単3 0221デフォルトの名無しさん2011/02/09(水) 03:08:02 目指してる 未来が違うwwww byシャープ http://twitter.com/MASA_37/status/80401707711856640222デフォルトの名無しさん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 0223デフォルトの名無しさん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で解いてみてくだされ 0224デフォルトの名無しさん2011/02/10(木) 20:13:39 確認するがプログラムの作成の部分だよな? 0225デフォルトの名無しさん2011/02/10(木) 21:58:26 pythonでプログラムを作成してください ただしループが何回回るかも知りたいです 0226デフォルトの名無しさん2011/02/13(日) 15:50:27>>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
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。 0230デフォルトの名無しさん2011/02/17(木) 02:20:00>>229 x, y = 1, 2 sum_ = 0 while x < 400 * 1000: if x % 2 == 0: sum += x x, y = y, x+y print sum_
def fib(stop): x, y = 1, 2 while x <= stop: yield x x, y = y, x+y
print sum(x for x in fib(400 * 1000) if x % 2 == 0)
【 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
>>263を、この特徴に合わせて分けると a) 196 295 394 493 592 691 790 b) 689 788 887 986 c) 879 978 このうち、少なくともbは解じゃない。aを1回操作すると788になるから、aの方がbより1回多い。
……ここまでしか分からんかった。 02692682011/04/25(月) 20:08:36.16 誤 aを1回操作すると788になるから 正 aを1回操作すると887になるから 0270デフォルトの名無しさん2011/04/26(火) 01:30:26.68http://en.wikipedia.org/wiki/Lychrel_number でぐぐったら、結構出てくるなぁ。 0271デフォルトの名無しさん2011/04/27(水) 17:55:15.88>>267 少なくとも判定は出来ると思う 3桁の数なら 「回文数になる」 「回文数になる前に(おおざっぱに)1000個の数字がすべて出てくる」 「1000個出てこなくてもどこかで同じ数字が出てきて循環する」 のどれかになるんじゃないかな 0272デフォルトの名無しさん2011/04/27(水) 19:16:53.31>>271 余りをとったり、しないんだよね。 そしたら、足すたびに数字は増えるので循環とか数字全部出るとかはありえないよ。 0273デフォルトの名無しさん2011/04/27(水) 20:12:16.88>>372 うは ごめん 素で勘違いしてたわ 0274デフォルトの名無しさん2011/04/28(木) 01:13:33.28 ロングパス入りました。 0275デフォルトの名無しさん2011/04/28(木) 01:21:22.71>>372 世の中には、勘違いしてても気づかない奴もいるって事よ。 0276デフォルトの名無しさん2011/04/29(金) 20:53:12.21 ゴールドバッハの予想 与えられた値を2つの素数の和で現してください verは出来れば2.6で エラトステネスのふるいを用いた素数リストを使って値を出すようにしてください お願いします 0277デフォルトの名無しさん2011/04/30(土) 00:48:17.11>>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 0278デフォルトの名無しさん2011/04/30(土) 06:55:17.50>>277 ありがとうございます 0279デフォルトの名無しさん2011/06/02(木) 06:22:08.84 日本の大学とかでPythonの宿題がでる(Python使って教えている)ところって多いの? 0280デフォルトの名無しさん2011/06/02(木) 17:55:17.03 The university of second channel 0281デフォルトの名無しさん2011/06/14(火) 19:57:57.72 カーニハンの『プログラミング作法』の3章に出てくる、マルコフ連鎖の Perl版の奴をPythonに移植したいんのですが、データ構造をどう実装すれば いいのかよくわかりません。
http://codepad.org/RaKvygkr0312営利利用に関するLR審議中@詳細は自治スレへ2012/04/08(日) 11:12:00.89 いやです 0313デフォルトの名無しさん2012/04/15(日) 23:15:02.68>>311 The resource could not be found. 03143082012/04/16(月) 00:23:02.09 あやー 見てくれる人いたんですか。 あれからちょこちょこいじっているので URL変わっちゃってます。