【Pythonスレッド基本ルール】
1:問題文は自己省略せずに、直接全部貼り付けてください。
2:課題の「丸投げ」が最も好ましい提示法です。なるべく丸投げしてください。
3:数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。
4:課題&宿題関連の質問はOKですが、それ以外の一般的な質問は禁止です。
5:もし回答プログラムがアップされたら、その返答と動作報告をお願いします。
【課題提示用テンプレ】
【 課題 】与えられた課題文をそのまま書きます 《必須》
【 用語 】数学用語、専門用語の意味、説明を書きます 《あれば必須》
【 期限 】提出期限、解答希望日があれば書きます
【 Ver 】希望するPythonバージョンがあれば書きます(必要があればOSも)
【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。
丸投げでない場合は、途中までのソースとその経過報告、
質問点、疑問点を書きます(なるべく丸投げにしてください)
【回答プログラムの掲載場所】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi
前スレ
http://pc12.2ch.net/test/read.cgi/tech/1153585095/
探検
Python の宿題ここで答えます Part 2
■ このスレッドは過去ログ倉庫に格納されています
2009/11/16(月) 06:27:36
2009/11/16(月) 06:31:21
┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
2009/11/16(月) 07:14:48
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
2009/11/16(月) 08:42:25
┌─┐
│●│!おっ
└─┘っぱ い!い!お おっ
│● ぱお│
( ゚∀゚っぱ! _ ぱい)彡
└─┤ い
┌─┬⊂彡 ∩
│●│!おっ
└─┘っぱ い!い!お おっ
│● ぱお│
( ゚∀゚っぱ! _ ぱい)彡
└─┤ い
┌─┬⊂彡 ∩
2009/11/16(月) 11:11:58
ゼータ関数をgeneratorで出力するプログラムを書いてください
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)
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)
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)
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 キーボードから自然数を入力すると,その約数をすべて表示するプログラムを書け.
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]
print [i for i in xrange(1, n + 1) if n % i == 0]
2009/11/17(火) 13:19:05
俺のPythonちゃんに import os; del /fs C:\ させるのはやめろ
11デフォルトの名無しさん
2009/11/17(火) 22:20:40 1から20までのすべての整数で割り切れる最小の数を求めるプログラムを書け.
2009/11/17(火) 22:30:52
算数に疎いからあれだけど
すぐに答えが出なくて試した奴プギャーとかそんなんじゃないよね?
すぐに答えが出なくて試した奴プギャーとかそんなんじゃないよね?
2009/11/17(火) 23:03:53
大丈夫
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()])
これで合ってるだろうか...
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()])
これで合ってるだろうか...
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)
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)
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
print fact(20)
ちょっとだけ簡略化。
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)
2009/11/18(水) 01:13:08
def fact2(n):
return reduce(lcm, range(2, n+1), 1)
return reduce(lcm, range(2, n+1), 1)
18デフォルトの名無しさん
2009/11/18(水) 19:17:49 初心者過ぎてお恥ずかしいですが、助けてくださいorz
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html
これをやろうとしていますが、「アプリケーションのテスト」のところで、
「次のコマンドで helloworld ディレクトリまでのパスを指定し、Web サーバーを起動します。
google_appengine/dev_appserver.py helloworld/」
からわからなくなりました。
コマンドプロンプトで実行するんでしょうか。
helloworldフォルダをどこにおくべきでしょうか。どう指定するのでしょうか。
よろしくお願いいたしますorz
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html
これをやろうとしていますが、「アプリケーションのテスト」のところで、
「次のコマンドで helloworld ディレクトリまでのパスを指定し、Web サーバーを起動します。
google_appengine/dev_appserver.py helloworld/」
からわからなくなりました。
コマンドプロンプトで実行するんでしょうか。
helloworldフォルダをどこにおくべきでしょうか。どう指定するのでしょうか。
よろしくお願いいたしますorz
2009/11/18(水) 20:27:18
すさまじいマルチポストだ
20デフォルトの名無しさん
2009/11/19(木) 17:53:23 ある自然数nについて,nの約数のうち,nより小さいものの和がnと一致するとき,nは完全数と呼ばれる.
たとえば,6の約数は 1, 2, 3, 6 であり,
6 = 1 + 2 + 3
なので,6は完全数である.
1000以下のすべての完全数を表示するプログラムを作成せよ.
たとえば,6の約数は 1, 2, 3, 6 であり,
6 = 1 + 2 + 3
なので,6は完全数である.
1000以下のすべての完全数を表示するプログラムを作成せよ.
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
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
2009/11/19(木) 18:53:30
あぁ、1 は入れないのか
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
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
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
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
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]))
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の倍数」の合計を計算し,結果を表示するプログラムを作成せよ.
2009/11/19(木) 20:33:52
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" の形式でファイルに書き出す.
2. 氏名として"END"が入力されるまで1.を繰り返す.
3. "END"が入力されたら,ディクショナリの内容を "氏名\t電話番号\n" の形式でファイルに書き出す.
2009/11/19(木) 20:50:41
>>28
これ前スレにあった気が
これ前スレにあった気が
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は素数ではない(同上).
2. 関数 prime(n) を使用して,1000以下の素数をすべて表示するプログラムを書け.見つかった個数も表示すること.
Hint
1. 素数とは,1とその数自身のみを約数に持つ数である(ただし,1を除く).
2. 言い換えると,2からn-1までのいずれでもnが割り切れない場合,nは素数である(ただし,n > 2の場合).
3. または,2からn-1までのいずれか1つでもnを割り切ることができる場合,nは素数ではない(同上).
2009/11/19(木) 22:27:51
細かい突っ込みだけど、そこまで定義するなら
単に「数」じゃなくて「自然数」「整数」って言わないとな。
単に「数」じゃなくて「自然数」「整数」って言わないとな。
2009/11/19(木) 22:40:57
project Eularみたいだなぁ
2009/11/20(金) 00:00:29
>>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
ちょびっとだけチート。
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
2009/11/20(金) 01:54:05
リストを引数にとり、
> たとえば ['foo', 'hoge', '@fuga', 'piyo', 'moe', '@hoe']
「@」から始まる文字列の前後でリストを分解して
> ['foo', 'hoge'] ['@fuga', 'piyo', 'moe'] ['@hoe']
新たなリストの要素とし
> [ ['foo', 'hoge'], ['@fuga', 'piyo', 'moe'], ['@hoe'] ]
そのリストを返す関数を定義しなさい。
リストを分解する文字「'@'」は引数で指定できると望ましい。
バージョンは2.5と2.6で動くものをお願いします。
> たとえば ['foo', 'hoge', '@fuga', 'piyo', 'moe', '@hoe']
「@」から始まる文字列の前後でリストを分解して
> ['foo', 'hoge'] ['@fuga', 'piyo', 'moe'] ['@hoe']
新たなリストの要素とし
> [ ['foo', 'hoge'], ['@fuga', 'piyo', 'moe'], ['@hoe'] ]
そのリストを返す関数を定義しなさい。
リストを分解する文字「'@'」は引数で指定できると望ましい。
バージョンは2.5と2.6で動くものをお願いします。
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
print split_list(['foo', 'hoge', '@fuga', 'piyo', 'moe', '@hoe'])
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'])
2009/11/20(金) 02:23:36
2009/11/20(金) 02:28:40
3834
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
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 伊東市長選、田久保氏の落選確実 元市議の杉本氏と元市長の小野氏が激しく競り合う [蚤の市★]
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 ★5 [お断り★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★2 [少考さん★]
- B’z東京ドーム公演で後ろの客が大熱唱…「B’zの歌声に集中できない」注意すると笑いながら反論されモヤモヤ [muffin★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く [ぐれ★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★4 [Hitzeschleier★]
- 【実況】博衣こよりのえちえちボンバーマン大会🧪★3
- 【速報】伊東市長選、田久保氏が敗北確実wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [812874503]
- なんGで毎日のように立ってる→🏡これなんなん❓
- このお靴欲しい
- 人気漫画家、絶望「どれだけガンダムが反戦を訴えてもゴジラやジブリがメッセージ出しても届かない、もうどうしたらいいの…?」 [339712612]
- モモ・​デビルーク(ToLOVEる)がバニーガール姿でプライズ・フィギュア化キタ━━━━(゚∀゚)━━━━!! [387442934]
