2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Python の宿題ここで答えます Part 2

1 :デフォルトの名無しさん:2009/11/16(月) 06:27:36
【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/

2 :デフォルトの名無しさん:2009/11/16(月) 06:31:21
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

3 :デフォルトの名無しさん:2009/11/16(月) 07:14:48
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

4 :デフォルトの名無しさん:2009/11/16(月) 08:42:25
   ┌─┐
   │●│!おっ  
└─┘っぱ い!い!お おっ  
│●  ぱお│ 
 ( ゚∀゚っぱ! _  ぱい)彡
   └─┤ い

┌─┬⊂彡 ∩

5 :デフォルトの名無しさん:2009/11/16(月) 11:11:58
ゼータ関数をgeneratorで出力するプログラムを書いてください

6 :デフォルトの名無しさん: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)

7 :デフォルトの名無しさん: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)

8 :デフォルトの名無しさん:2009/11/16(月) 23:48:00
キーボードから自然数を入力すると,その約数をすべて表示するプログラムを書け.



9 :デフォルトの名無しさん: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]

10 :デフォルトの名無しさん:2009/11/17(火) 13:19:05
俺のPythonちゃんに import os; del /fs C:\ させるのはやめろ

11 :デフォルトの名無しさん:2009/11/17(火) 22:20:40
1から20までのすべての整数で割り切れる最小の数を求めるプログラムを書け.



12 :デフォルトの名無しさん:2009/11/17(火) 22:30:52
算数に疎いからあれだけど
すぐに答えが出なくて試した奴プギャーとかそんなんじゃないよね?

13 :デフォルトの名無しさん:2009/11/17(火) 23:03:53
大丈夫

14 :デフォルトの名無しさん: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()])

これで合ってるだろうか...

15 :デフォルトの名無しさん: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)

16 :デフォルトの名無しさん: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)

17 :デフォルトの名無しさん:2009/11/18(水) 01:13:08
def fact2(n):
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

19 :デフォルトの名無しさん: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以下のすべての完全数を表示するプログラムを作成せよ.



21 :デフォルトの名無しさん: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

22 :デフォルトの名無しさん:2009/11/19(木) 18:53:30
あぁ、1 は入れないのか

23 :デフォルトの名無しさん: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

24 :デフォルトの名無しさん: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


25 :デフォルトの名無しさん: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]))

26 :デフォルトの名無しさん:2009/11/19(木) 20:20:23
1000よりも小さいすべての「3または5の倍数」の合計を計算し,結果を表示するプログラムを作成せよ.

27 :デフォルトの名無しさん: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" の形式でファイルに書き出す.


29 :デフォルトの名無しさん: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は素数ではない(同上).


31 :デフォルトの名無しさん:2009/11/19(木) 22:27:51
細かい突っ込みだけど、そこまで定義するなら
単に「数」じゃなくて「自然数」「整数」って言わないとな。

32 :デフォルトの名無しさん:2009/11/19(木) 22:40:57
project Eularみたいだなぁ

33 :デフォルトの名無しさん: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

34 :デフォルトの名無しさん: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で動くものをお願いします。

35 :デフォルトの名無しさん: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'])

36 :デフォルトの名無しさん:2009/11/20(金) 02:23:36
>>35
http://codepad.org/PYgcfR3z

37 :デフォルトの名無しさん:2009/11/20(金) 02:28:40
>>35
インデントがずれてるねぇ
http://codepad.org/2qWBifXW

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


40 :デフォルトの名無しさん:2009/11/20(金) 18:21:32
出来ました先生
>>> 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

41 :デフォルトの名無しさん:2009/11/20(金) 18:22:02
from fractions import Fraction

42 :デフォルトの名無しさん:2009/11/20(金) 18:24:12
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧  ヒソヒソ・・・
( ´・ω) 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)を持つ (引数なし)


44 :デフォルトの名無しさん:2009/11/24(火) 20:45:28
概出

45 :デフォルトの名無しさん:2009/11/25(水) 22:27:19
Polygonをスーパークラスとして,正三角形(Triangle),正四角形(Square)を表現するクラスをそれぞれ定義せよ.

・辺の長さのみを引数に与えてインスタンスを生成する
・自身の面積を計算して結果を返すメソッドarea()を持つ
√3 = 1.73 としてよい
メインルーチンでは,実際にインスタンスを生成し,各インスタンスについて,インスタンス自身,周囲の長さ,面積の3項目を表示するようにせよ.



46 :デフォルトの名無しさん:2009/11/25(水) 22:29:29
概出

47 :デフォルトの名無しさん:2009/11/29(日) 09:49:56
【 課題 】四人四首問題。「かるた部」の練習の一環として、
百人一首の中から第一文字が「や」の四枚を選んで、徹底的に練習することに
しました。四枚とは、
やすらはでねなましものをさよふけてかたぶくまでのつきをみしかな
やへむぐらしげれるやどのさびしきにひとをもみをみうらみざらまし
やまざとはふゆぞさびしさまさりけるひとめもくさもかれぬとおもへば
やまがはにかぜのかけたるしがらみはながれもあへぬもみぢなりけり
ルールは、
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
すみません。これは完全なシミュレーションとしてプログラムしてください。
読み札が表示されたら、キーボードから答えを入力という作り方もあると
思いますが。

50 :デフォルトの名無しさん:2009/11/29(日) 11:55:25
# 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)

51 :デフォルトの名無しさん:2009/11/29(日) 19:44:36
>>50
ありがとうございます。


52 :デフォルトの名無しさん:2009/12/02(水) 07:56:47
【 課題 】和歌について考察する問題。
歌 ... こぬ人を待つほの浦の夕凪はやくやもしほの身もこがれつつ (定家)
これはかなり複雑なうたです。
人をまつとは「待つ」であり、「松」です。まつ帆だからです。松の姿に似た帆です。
もちろん松は浦の背景でもあります。浦は夕凪ですから心は風を「待って」もいます。
風はありませんから、待ってもこぬ人なのです。風があの人なのかそれとも帆船なのか
微妙です。浦は「浦」であると同時に心の「裏」であり、あの人(風)の気持ちを「占」なふ、
うらでもあります。
「焼くや」(やいているのだろうか)とは、恋に焦がれて身を焼いているのであり、
やくやもしほとは藻塩(自分)が陽にあぶられ、渇き、焼かれ、煙でいぶされ、さらに
煮られ、再び乾かされというような、製塩法の愛の地獄絵であり、身もこがれという
言葉には「藻」がここでも含まれています。製塩の煙は夕凪の浦に実際に漂って
いるのかもしれません。
以上のような、この歌に含まれる語とそれからくる連想をプログラムで表現しなさい。

53 :デフォルトの名無しさん:2009/12/23(水) 23:58:06
Windows XP上で、
標準入力から入力されたパスを調べて、
1.実在するディレクトリだったらそのディレクトリとサブディレクトリの中のファイルのフルパスの一覧を標準出力に出力する。
2.実在するファイルだったらそのフルパスを標準出力に出力する。
3.実在しないパスだったらエラーを標準出力に出力する。

こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。


54 :デフォルトの名無しさん:2009/12/24(木) 00:13:41
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

55 :デフォルトの名無しさん:2009/12/24(木) 11:56:36
>>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だとそんなに簡潔に書けるんですね。
ありがとうございます
(>_<)

57 :デフォルトの名無しさん:2009/12/25(金) 05:13:16
>そのディレクトリとサブディレクトリの中の
題意を満たしていないような希ガス

58 :デフォルトの名無しさん:2009/12/25(金) 11:20:37
>>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.'

59 :デフォルトの名無しさん:2009/12/25(金) 12:16:49
>そのディレクトリと
題意を満たしていないような希ガス


60 :デフォルトの名無しさん:2009/12/25(金) 19:23:14
宿題なんだから
ちょっと間違えてるくらいが丁度良い

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'
こんなエラーがでました。
どうすれば良いでしょうか。

63 :デフォルトの名無しさん:2009/12/25(金) 21:33:57
pythonのバージョンは? python -Vで調べられる

64 :デフォルトの名無しさん:2009/12/25(金) 22:32:31
C:\>python -V
Python 2.2.2

って言われました。


65 :デフォルトの名無しさん:2009/12/25(金) 22:54:12
>>64
os.walkは2.3から
os.listdirでも使って再帰で書く

66 :デフォルトの名無しさん:2009/12/25(金) 23:04:24
>>65
えと・・・最新をDLしてきてインストールすれば
大丈夫でしょうか。

67 :デフォルトの名無しさん:2009/12/25(金) 23:09:53
>>66
それがベスト

68 :デフォルトの名無しさん:2009/12/25(金) 23:27:07
>>67
ありがとうございます。
ご教示に従います。


69 :68:2009/12/25(金) 23:37:58
できました。
ありがとうございました。

70 :デフォルトの名無しさん:2009/12/28(月) 08:00:42
Windows XP上で、
標準入力から入力されたパスを調べて、
1.実在するディレクトリだったらそのディレクトリの名前とサブディレクトリの名前と、
それらの中にあるファイルの名前、およびファイルの中身に以下の置換作業を実行する。
 前からみて順に正規表現regex="〜〜"にマッチする文字列を全て"hogehoge"に置換する。
2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。

こんなPythonスクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。


71 :デフォルトの名無しさん:2009/12/28(月) 08:02:24
>>70
×2.実在しないディレクトリでなかったらエラーメッセージを標準出力に出力する。
○2.実在 する ディレクトリでなかったらエラーメッセージを標準出力に出力する。


72 :デフォルトの名無しさん:2009/12/28(月) 08:05:23
> regex="〜〜"にマッチする文字列を全て"hogehoge"
これはユーザにどうやって指定させるんだ
それともスクリプト中に埋め込んでしまっていいのか

というかパスを置換するのはわかったけど
ファイルの中身まで置換するっていうのは本気なのか

73 :デフォルトの名無しさん:2009/12/28(月) 08:17:40
>>72
> これはユーザにどうやって指定させるんだ
ごもっともです。
ちょっと変えて、

setting.iniを読み込んで1行目を
> 標準入力から入力されたパスを調べて、
これに代えて調べるパスとします。

また2行目を
regex="〜〜" #正規表現
3行目を
"hogehoge" #置換後の文字列
として取得するとしてください。

> というかパスを置換するのはわかったけど
> ファイルの中身まで置換するっていうのは本気なのか
本気です。
・・・宿題なものでして。


74 :デフォルトの名無しさん:2009/12/28(月) 09:28:50
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が分かりません。


75 :デフォルトの名無しさん:2009/12/28(月) 10:02:38
>>74
a = ('apple', [])
b = ('apple', [])

で考えてみたらいいんじゃないかな
筋の悪い問題なのであまり深く考えないでいいよ

76 :デフォルトの名無しさん:2009/12/28(月) 10:05:33
念のために付け加えると

> 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)
こんなことは可能だから、ってことですね。
なるほど。


78 :デフォルトの名無しさん:2009/12/28(月) 13:52:08
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スクリプトをどなたか書いて下さいませんか?
よろしくお願い申し上げます。


80 :デフォルトの名無しさん:2009/12/29(火) 00:18:18
最近はそんな宿題が出るのか

81 :デフォルトの名無しさん:2009/12/29(火) 08:21:32
どの言語でもいいからこんなのを作りなさい

という感じの一般教養+αな宿題です。

82 :デフォルトの名無しさん:2010/01/01(金) 08:57:27
あけましておめでとうございます。

すみませんどなたか
>>79
お願いできませんか?
ファイル名はともかく全てのファイルの中身を置換するというところがいまひと
つできなさそうです。
文系なのですが何を間違ったかこんな難しそうな科目を…。

83 :デフォルトの名無しさん:2010/01/01(金) 14:36:18
#!/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
ありがとうございます。
とても助かりました。
新年早々お手数をおかけいたしました。


85 :デフォルトの名無しさん:2010/01/17(日) 21:12:41
【課題】
同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
処理の早いものには追加点を与える。
【期限】 1月18日(月) 午後1時
【Ver】 Python 2.6

よろしくおねがいします。

86 :デフォルトの名無しさん:2010/01/17(日) 22:43:37
A, B の初期値と結果の具体例が欲しい。
A, B が同じ長さのリストと言ってるが、
共通してない要素はソートの結果のどこに入るんだ?

87 :デフォルトの名無しさん:2010/01/18(月) 01:08:35
>>86
問題よくよめ

88 :デフォルトの名無しさん:2010/01/18(月) 01:20:42
mysort = lambda A, B: [t[1] for t in sorted(zip(B, A))]

89 :デフォルトの名無しさん:2010/01/18(月) 13:14:38
>>85
比較用の値ってなんですか?
あれ、時間切れかな。

90 :デフォルトの名無しさん:2010/01/18(月) 17:06:43
>>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行で出来ちゃうんですね。十数行も書いたあげく動かなかった俺って…
ありがとうございました。

92 :デフォルトの名無しさん:2010/01/27(水) 00:28:55
●カップラーメンのタイマーを作成●
・tkinterをしようしてGUIで操作できるようにする。
・3分、5分、…といくつか選択できるようにする。
スマートなコードを宜しくお願い致します。

93 :デフォルトの名無しさん:2010/01/27(水) 00:43:10
概出
答えは過去ログでどうぞ

94 :デフォルトの名無しさん:2010/01/27(水) 01:46:02
#!/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も平行して学習しているんですが(意外といい)
出てくる用語はほぼ同じと考えてもいいですか?
クラスとか、継承とか、オブジェクトとか


96 :デフォルトの名無しさん:2010/01/27(水) 03:00:07
VBに継承でてくんの?

97 :デフォルトの名無しさん:2010/01/27(水) 04:10:40
参考書には書いてあるんですよ

98 :デフォルトの名無しさん:2010/01/29(金) 21:55:33
VBの継承ってどんなのか解らんが
クラスやオブジェクトについてはだいたい一緒じゃね
個人的にVBは戻り値の設定と関数からの脱出が別れてるとこが面白いな

99 :デフォルトの名無しさん:2010/01/30(土) 00:11:24
面倒なだけで面白くもなんともない

さらに戻り値設定し忘れとか起こすしろくなことにならない
言語仕様として糞

100 :デフォルトの名無しさん:2010/01/30(土) 00:28:46
>>99
> 言語仕様として糞
というか言語自体として糞

101 :デフォルトの名無しさん:2010/01/30(土) 00:42:08
VBの継承ってどんなの?

102 :デフォルトの名無しさん:2010/01/30(土) 00:43:15
>>100
VB は Linux で動かないもんなぁ

103 :デフォルトの名無しさん:2010/01/30(土) 13:48:02
>>102
Linux で動かないの?
なんつうクソ言語

104 :ゆかちん:2010/02/13(土) 22:59:26
お疲れ様です!
こんなのやってるんですがヘルプお願いします。
配列作って文字列を入れればいいんでしょうか?
よろしくお願いします。

以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの


105 :デフォルトの名無しさん:2010/02/13(土) 23:06:52
import random
random.randint(0, 4) # 0 から 4 をランダムで返す

考え方はそれであってるからあとはがんばって

106 :ゆかちん:2010/02/13(土) 23:20:56
配列の作り方をお願いします
乱数のところはわかりました。ありがとうございます!
スキージャンプまでになんとかせねば

107 :デフォルトの名無しさん:2010/02/13(土) 23:43:33
配列ってより、リストかタプルな。てか、choice使うと楽。
import random
random.choice(["あいうえお", "かきくけこ", "以下略"])

108 :デフォルトの名無しさん:2010/02/14(日) 00:11:45
うーむそれだとスケールできないだろ
5行ならいいが1000行でやろうとするとその方法だと無理

109 :デフォルトの名無しさん:2010/02/14(日) 01:03:38
ファイルか標準入力から読み込ませたいな

110 :デフォルトの名無しさん:2010/02/14(日) 02:51:13
>>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
タプルって何?

112 :デフォルトの名無しさん:2010/02/14(日) 13:59:28
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の時にプログラムを終了したいということです。
よろしくお願い申し上げます。


115 :デフォルトの名無しさん:2010/02/14(日) 15:35:28
ちょっとスレチな気がするんで、別すれに行ってきます
すみません。

116 :デフォルトの名無しさん:2010/02/14(日) 16:13:40
print 'aaa'

if boolean :
raise Exception

print 'bbb'
print 'ccc'

117 :114:2010/02/14(日) 16:39:47
>>116
ありがとうございます。


118 :デフォルトの名無しさん:2010/02/14(日) 18:37:05
おっぱいうp

119 :デフォルトの名無しさん:2010/02/14(日) 23:28:30
>>114
環境によって適切な終了方法が違う気がするけど
import sys
sys.exit()
が使いやすいと思う。

120 :デフォルトの名無しさん:2010/02/15(月) 07:02:06
raise SystemExit
で良いらしい (import sys したくないとき)

121 :デフォルトの名無しさん:2010/02/21(日) 11:05:30
教える人は自分が偉くなったと勘違いをしているのか…


122 :デフォルトの名無しさん:2010/02/21(日) 18:55:28
は?教えてやるんだから偉いんだお

123 :デフォルトの名無しさん:2010/02/24(水) 23:50:04
http://www.python.jp/doc/release/tut/tut.html

124 :デフォルトの名無しさん:2010/02/26(金) 14:58:29
少なくとも匿名掲示板で教えられる方が偉いなんてことはあり得ないな

125 :デフォルトの名無しさん:2010/02/27(土) 00:46:13
import sys って具体的にどういうときに使うんですか?

126 :デフォルトの名無しさん:2010/02/27(土) 00:52:06
sysをimportしたい時

127 :デフォルトの名無しさん:2010/02/27(土) 14:21:25
sys.なんたら が必要なとき。

128 :デフォルトの名無しさん:2010/02/28(日) 22:05:14
sys.exit()

129 :デフォルトの名無しさん:2010/03/01(月) 00:47:56
sys.stdout.write("ggrks")

130 :デフォルトの名無しさん:2010/03/01(月) 00:57:33
raise で終わらせるなんてかこわるい!



と思って、 sys.exit() って raise SystemExit なのね。

でもきもちわるい。

ttp://docs.python.org/lib/module-sys.html

131 :デフォルトの名無しさん:2010/03/01(月) 08:30:43
>>130
os._exit(status) もあるよ。
例外を使うのは、 sys.exit() を実行したところからまき戻って
try-finally節で用意されたファイルの削除処理などを実行するため。
それでも気持ち悪い?

132 :デフォルトの名無しさん:2010/03/07(日) 21:05:47
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

133 :デフォルトの名無しさん:2010/03/20(土) 09:55:10
【 課題 】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

134 :デフォルトの名無しさん:2010/03/20(土) 10:13:34
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

135 :デフォルトの名無しさん:2010/04/14(水) 22:03:39
    ヘ⌒ヽフ
   ( ・ω・) 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] その他の制限: 多少不恰好でも、分かりやすいプログラムがいいです、、。

よろしくお願いします。

139 :デフォルトの名無しさん:2010/06/30(水) 19:14:43
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文:
二分法による平方根の計算。但し、求めたい平方根(自
然数)を入力できるようにした上で、プログラムの実行時
の計算回数を計算・表示できるように、プログラムを作成
すること。
[3] 環境
 [3.1] OS: ChromeOS
 [3.2] バージョン: Python3
 [3.3] 言語: Python
[4] 期限:7月3日まで
[5] その他の制限:特になし

よろしくお願いします。

140 :デフォルトの名無しさん:2010/07/01(木) 21:48:36
すいません便乗して
[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 というふうにしてください。
よろしくお願いします。

141 :デフォルトの名無しさん:2010/07/04(日) 12:24:50
> 問題が2つあるので、b1.rb b2.rb というふうにしてください。
> 問題が2つあるので、b1.rb b2.rb というふうにしてください。
> 問題が2つあるので、b1.rb b2.rb というふうにしてください。

142 :デフォルトの名無しさん:2010/07/04(日) 12:43:25
それがどうかしましたか

143 :デフォルトの名無しさん:2010/07/04(日) 14:09:43
rubyのスレじゃねぇぞw

144 :デフォルトの名無しさん:2010/07/04(日) 21:37:00
    すいません訂正
    [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などライブラリは使用せずにお願いします

147 :デフォルトの名無しさん:2010/07/09(金) 00:01:01
DirectShow は OK ?

148 :146:2010/07/09(金) 09:09:53
可能ならば使わずにお願いします
わがままを言って申し訳ありません

149 :デフォルトの名無しさん:2010/07/09(金) 09:45:20
http://pc12.2ch.net/test/read.cgi/tech/1247100724/

150 :146:2010/07/15(木) 12:40:53
146の課題ですが、パーティクルフィルタが実装されているもの(OpenCV等)以外ならば
ライブラリを使用しても良いと言われました

どなたかよろしくお願いします

46 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)