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

このエントリーをはてなブックマークに追加
712デフォルトの名無しさん
【 課題 】100マス計算をするプログラムを書いてください。
【 用語 】下記
【 期限 】1/7くらいまで
【 Ver  】2.5以上(3でも可)
【 補足 】
プログラムがランダムに出題し、人間が100個の
マスに回答を入力し、確認ボタンを押すと
全問正解なら回答にかかった時間を表示して終了。
間違った場合は間違った場所にカーソルが止まり、
別の値が入力されるまで待ちます。
横10個、縦10個の数字は各々11〜99までの乱数、
演算は +,-,x のみでよいです。
よろしくおねがいします。
713デフォルトの名無しさん:2009/01/04(日) 22:56:08
age
714デフォルトの名無しさん:2009/01/04(日) 23:06:46
# -*- coding: utf-8 -*-

import tkinter as Tk
from tkinter.simpledialog import SimpleDialog
import random

class Application:
  FONT = ("MSゴシック", 20)
  OPS = [("+", lambda x, y: x + y),
     ("−", lambda x, y: x - y),
     ("×", lambda x, y: x * y)]
  def __init__(self):
    self.root = Tk.Tk()
    self.root.title("100マス計算")
    self.root.option_add("*font", self.FONT)
    frame = Tk.Frame(self.root)
    frame.pack(side=Tk.TOP)
    self.op_button = Tk.Button(frame, command=self.change_op)
    self.op_button.grid(row=0, column=0)
    self.entries = {}
    self.tate_labels = []
    self.yoko_labels = []
    for i in range(10):
      label = Tk.Label(frame, text="0")
      label.grid(row=i+1, column=0)
      self.tate_labels.append(label)
      label = Tk.Label(frame, text="0")
      label.grid(row=0, column=i+1)
      self.yoko_labels.append(label)
715714の続き:2009/01/04(日) 23:08:22
      for j in range(10):
        entry = Tk.Entry(frame, width=4)
        entry.grid(row=i+1, column=j+1)
        self.entries[(i, j)] = entry
    button = Tk.Button(self.root, text="出題", command=self.new)
    button.pack(side=Tk.LEFT)
    button = Tk.Button(self.root, text="終了", command=self.root.quit)
    button.pack(side=Tk.RIGHT)
    button = Tk.Button(self.root, text="確認", command=self.check)
    button.pack(side=Tk.BOTTOM)
    self.easy = True
    self.debug = False
    self.op = 0
    self.new()
    self.root.mainloop()
  def change_op(self):
    self.op = (self.op + 1) % 3
    self.new()
  def new(self):
    label, func = self.OPS[self.op]
    self.op_button.config(text=label)
    if self.easy:
      self.tate = list(range(1, 11)); random.shuffle(self.tate)
      self.yoko = list(range(1, 11)); random.shuffle(self.yoko)
    else:
      self.tate = [random.randint(11, 99) for i in range(10)]
      self.yoko = [random.randint(11, 99) for i in range(10)]
    for i, num in enumerate(self.tate):
      self.tate_labels[i].config(text=str(num))
    for i, num in enumerate(self.yoko):
      self.yoko_labels[i].config(text=str(num))
716715の続き:2009/01/04(日) 23:09:53
    for i in range(10):
      for j in range(10):
        entry = self.entries[(i, j)]
        entry.config(bg="white")
        entry.delete(0, Tk.END)
    if self.debug:
      for i in range(10):
        for j in range(10):
          answer = func(self.tate[i], self.yoko[j])
          entry = self.entries[(i, j)]
          entry.insert(0, str(answer))
  def check(self):
    label, func = self.OPS[self.op]
    count = 0
    for i in range(10):
      for j in range(10):
        entry = self.entries[(i, j)]
        if entry.get() == str(func(self.tate[i], self.yoko[j])):
          entry.config(bg="white")
        else:
          entry.config(bg="red")
          count += 1
    if count == 0:
      msg = "全問正解\(^o^)/\nよくできました"
    else:
      msg = "赤色の{0}マスが間違っています".format(count)
    d = SimpleDialog(self.root, text=msg, buttons=["OK"])
    d.go()

Application()
717デフォルトの名無しさん:2009/01/04(日) 23:12:09
禿げしくありがとうございます!!
718714-716:2009/01/04(日) 23:21:38
Python 3.0 で書いてみたお。2.x とほとんど変わらない希ガス。

self.easy を偽にすると11〜99の数字で出題されるようになるお。
self.debug を真にすると自動的に正答が記入されるお。
Windows 以外の環境では FONT の値を適当にいじる必要があると思われ。

回答時はタブキーを利用して次のマスに移動すると良さげ。

足し算をすこしやってみたけどイライラして神経衰弱になりそうだったお orz
719デフォルトの名無しさん:2009/01/05(月) 00:07:46
2桁の掛け算はつらいですね
720デフォルトの名無しさん:2009/01/05(月) 00:14:13
死ぬな これ・・・
721デフォルトの名無しさん:2009/01/05(月) 00:34:20
こんなのの動作確認したくない
722デフォルトの名無しさん:2009/01/05(月) 00:59:22
学校の宿題で必須なんです、お願いしますm(_ _)m
723デフォルトの名無しさん:2009/01/05(月) 01:06:13
もれ2桁の掛け算の仕方忘れてるw
724デフォルトの名無しさん:2009/01/05(月) 05:52:46
Rubyスレからきますた。即レスで回答してて吹いたww
これは負けられんwww
725デフォルトの名無しさん:2009/01/05(月) 08:24:56
煽らなくていいから
726デフォルトの名無しさん:2009/01/05(月) 09:52:39
はあ?wwwみなぎってきたwww
727デフォルトの名無しさん:2009/01/05(月) 14:33:30
KO ,
OK、○十く,
728デフォルトの名無しさん:2009/01/07(水) 21:51:12
足し算をすこしやってみたけどイライラして神経衰弱になりそうだったお orz
729デフォルトの名無しさん:2009/01/08(木) 00:54:33
だおだおうっせーお
730デフォルトの名無しさん:2009/01/08(木) 15:37:11
彼氏が3.0なのにprint "hoge"してた。
別れたい。
731デフォルトの名無しさん:2009/01/08(木) 19:29:37
童貞でネカマって死んだ方がいいよな。
732デフォルトの名無しさん:2009/01/08(木) 22:22:39
いいや、
殺伐とした世の中で
「ときめき」みたいなものを感じてくれるから
生きていて欲しい。
733デフォルトの名無しさん:2009/01/08(木) 22:40:59
天国のお花畑で生きてくれ。
734デフォルトの名無しさん:2009/01/08(木) 23:36:35
おい、上の方にあるプログラミング自慢みたいなコードは
みんなのpythonに大体載っていますか?
735デフォルトの名無しさん:2009/01/08(木) 23:38:39
あれを読んだだけでTkが使えるようにはならないから安心しやがれ
736デフォルトの名無しさん:2009/01/08(木) 23:53:38
必要になったら書けばいいか
別にWEBアプリとかいらないし
737デフォルトの名無しさん:2009/01/09(金) 00:05:23
お花畑からご苦労様です。
738デフォルトの名無しさん:2009/01/09(金) 00:14:46
みんなのpythonは入門書だろ
739デフォルトの名無しさん:2009/01/09(金) 11:43:59
732も童貞ネカマの仲間だな
一緒にいってこいや(w
740デフォルトの名無しさん:2009/01/11(日) 11:47:17
努力が必要
741デフォルトの名無しさん:2009/01/22(木) 02:17:17
そこでIronPythonですよ
742デフォルトの名無しさん:2009/01/22(木) 05:43:34
はじぱい 第2版 (2004/11) \5,040
http://www.amazon.co.jp/products/dp/4873112109/
はじぱい原著 3rd Edition (2008/07/16) $26.39
http://www.amazon.com/Learning-Python-3rd-Mark-Lutz/dp/0596513984/

恥ぱい 初犯 (2007/11) \1,995
http://www.amazon.co.jp/products/dp/4777513211/
恥ぱいネットワーク 初版 (2008/06) \1,995
http://www.amazon.co.jp/products/dp/4777513688/
恥ぱい3 初版 (2009/01) \1,995
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9
恥ぱいが3.0用になったんですね
743デフォルトの名無しさん:2009/01/22(木) 10:52:51
http://www.amazon.co.jp/dp/4777514196

ランキングがついてないってことは「一冊も売れてない」ということか。。。
744デフォルトの名無しさん:2009/01/26(月) 00:49:52
Python Network Programing といえばこっち
http://www.amazon.com/products/dp/1590593715 (2004/08/17 $36.51)
http://www.amazon.co.jp/products/dp/1590593715 (2004/08/30 \3,749) 値下がりしたっぽい
745デフォルトの名無しさん:2009/01/26(月) 01:07:49
http://www.amazon.co.jp/dp/4777513211/ 恥ぱい
163位 ─ 本 > コンピュータ・インターネット > 一般・入門書 > プログラミング入門書
574位 ─ 本 > コンピュータ・インターネット > インターネット・Web開発 > Web開発
1832位 ─ 本 > コンピュータ・インターネット > プログラミング

http://www.amazon.co.jp/dp/4777513688/ 恥ぱいネットワーク
89位 ─ 本 > コンピュータ・インターネット > 一般・入門書 > ネットワーク入門書
230位 ─ 本 > コンピュータ・インターネット > ネットワーク
277位 ─ 本 > コンピュータ・インターネット > 一般・入門書 > プログラミング入門書

http://www.amazon.co.jp/dp/4777514196/ 恥ぱい3
3020位 ─ 本 > コンピュータ・インターネット

http://www.amazon.co.jp/dp/479733665X/ みんPy
9位 ─ 本 > コンピュータ・インターネット > 一般・入門書 > プログラミング入門書
28位 ─ 本 > コンピュータ・インターネット > インターネット・Web開発 > Web開発
83位 ─ 本 > コンピュータ・インターネット > プログラミング

http://www.amazon.co.jp/dp/4797341815/ みんPy Webアプリ編
377位 ─ 本 > コンピュータ・インターネット > プログラミング

http://www.amazon.co.jp/dp/4774130567/ TurboGears + Python
537位 ─ 本 > コンピュータ・インターネット > 出版社別 > 技術評論社

http://www.amazon.co.jp/dp/4048672096/ 開発のプロが教える標準Django完全解説
1427位 ─ 本 > コンピュータ・インターネット > プログラミング

http://www.amazon.co.jp/dp/4839922829/ Jythonプログラミング
402位 ─ 本 > コンピュータ・インターネット > 出版社別 > 毎日コミュニケーションズ
746デフォルトの名無しさん:2009/01/26(月) 08:39:45
恥ぱい3は新刊なのにこんなに売れなくて大丈夫なのか?
作者首くくるようだな。
747デフォルトの名無しさん:2009/01/26(月) 12:32:21
ランキング何位とかどうやって調べてんだ?
748デフォルトの名無しさん:2009/01/26(月) 12:56:49
ランキングだけを見ると、みんPyはクソ本ということでFA ?
749デフォルトの名無しさん:2009/01/26(月) 19:20:32
7749
750デフォルトの名無しさん:2009/01/27(火) 17:52:01
>>748
みんPy以外がクソに見える。
恥ぱい3とかJythonとか売れてなさ過ぎ。
751デフォルトの名無しさん:2009/01/27(火) 18:46:14
ttp://www.nikoli.co.jp/ja/puzzles/slitherlink/
1.「スリザーリンク」を解くプログラムを書いてください
2.適当な難易度で問題を出題するプログラムを書いてください
752デフォルトの名無しさん:2009/01/27(火) 19:15:38
ttp://www.nikoli.com/ja/puzzles/slitherlink/

じゃなくて勝手に線引けってこと?それってつまんなくね?
753デフォルトの名無しさん:2009/01/27(火) 20:22:29
質問させてください。
Linux上で(pythonのバージョンは2.3)
mkdir()の引数を変数でパスを指定した正常にディレクトリが
作られるんですが、
windows上で(バージョンは2.6)
同じようにすると、パス中の\が\\に変換されてしまってるようで
うまくいきません。
ちなみにprintで変数を出力するとちゃんとそのままのパスが出てきます。
windows上ではどうすればいいんですか?
754デフォルトの名無しさん:2009/01/27(火) 20:25:58
日本語で桶
755デフォルトの名無しさん:2009/01/27(火) 20:43:01
r"dirname\filename"
"dirname\\filename"
"dirname/filename"
756753:2009/01/27(火) 20:52:48
ごめんなさい。わかりにくくて。

import sys
import os

f = open(sys.argv[1],"r")
for li in f.readlines():
li.rstrip("\n")
abc=os.path.dirname(sys.argv[1])
os.mkdir(os.path.join(abc,li))

txtファイルに作りたいフォルダ名がいくつかかかれていて、
それを同じフォルダ内に作りたいんです。
>>755
そのパス自体をsys.argvから受け取ってる場合はrはどう付ければいいんですか?
757756:2009/01/27(火) 21:33:26
os.mkdir(r""+os.path.join(abc,li))
としてみました。が変わりませんでした…。
758756:2009/01/27(火) 21:44:13
ごめんなさい。自己解決しました。\nの処理が不完全だったのが原因でした。
エラー表示を見たら\が\\となってたのでてっきりそれが原因かと…。
お騒がせしました。
759デフォルトの名無しさん:2009/01/27(火) 22:06:25
never mind
760デフォルトの名無しさん:2009/01/28(水) 02:23:52
def Okeru(Baseban,i):
Ura=[
[(1,2,3,4,5),(6,12,18,24,30),(7,14,21,28,35)],[(2,3,4,5),(7,13,19,25,31),(8,15,22,29)],
[(3,4,5,),(1,0),(8,14,20,26,32),(9,16,23),(7,12)],[(4,5),(2,1,0),(8,14,20,26,32),(7,12),(9,16,23)],
[(3,2,1,0),(10,16,22,28,34),(9,14,19,24)],[(4,3,2,1,0),(11,17,23,29,35),(10,15,20,25,30)],
[(7,8,9,10,11),(12,18,24,30),(13,20,29,34)],[(8,9,10,11),(13,19,25,31),(14,21,28,35)],
[(9,10,11),(7,6),(14,20,26,32),(13,18),(15,22,29)],[(10,11),(8,7,6),(15,21,29,35),(14,19,24),(16,23)],
[(9,8,7,6),(16,22,28,34),(15,20,25,30)],[(10,9,8,7,6),(17,23,29,35),(16,21,26,31)],
[(13,14,15,16,17),(6,0),(18,24,30),(7,2),(19,26,33)],[(14,15,16,17),(7,1),(19,25,31),(8,3),(20,29,34),()],[],[],
[(15,14,13,12),(10,4),(16,22,28,34),(9,2),(21,26,31)],[(16,15,14,13,12),(11,5),(23,29,35),(10,3),(22,27,32)],
[(19,20,21,22,23),(12,6,0),(18,24,30),(13,8,3),(25,32)],[(20,21,22,23),(13,7,1),(25,31),(14,9,4),(26,33)],[],[],
[(21,20,19,18),(16,10,4),(28,34),(15,8,1),(27,31)],[(22,21,20,19,18),(17,11,5),(29,35),(16,9,2),(28,33)],
[(25,26,27,28,29),(19,13,7,1),(18,12,6,0)],[(26,27,28,29),(19,13,7,1),(20,15,10,5)],
[(27,28,29),(25,24),(20,14,8,2),(19,12),(21,16,11)],[(26,25,24),(28,29),(21,15,9,3),(20,13,6),(22,17)],
[(27,26,25,24),(22,16,10,4),(21,14,7,0)],[(28,27,26,25,24),(23,17,11,5),(22,15,8,1)],
[(31,32,33,34,35),(24,18,12,6,0),(25,20,15,10,5)],[(32,33,34,35),(25,19,13,7,1),(26,21,16,11)],
[(31,30),(33,34,35),(26,20,14,8,2),(25,18),(27,22,17)],[(32,31,30),(34,35),(27,21,15,9,3),(28,23),(26,19,12)],
[(33,32,31,30),(28,22,16,10,4),(27,20,13,7,0)],[(34,33,32,31,30),(29,23,17,11,5),(28,21,14,7,0)]]
761デフォルトの名無しさん:2009/01/28(水) 02:25:10
Banlist=[]
for cnt in range(36):
if Baseban[cnt]==0:
matome=[]
for zyun in Ura[cnt]:
itizi=[]
for x in zyun:
if Baseban[x]==0:
break
elif Baseban[x]==i:
matome+=itizi
break
else:
itizi+=[x]
if matome!=[]:
Copyban=Baseban[:]
for x in matome:
Copyban[x]=i
Copyban[cnt]=i
Banlist+=[Copyban]
return Banlist
def Ura(ban):
copyban=[]
for cnt in ban:
copyban+=[-cnt]
return copyban
762デフォルトの名無しさん:2009/01/28(水) 02:26:13
すみません張るの失敗しました。
763デフォルトの名無しさん:2009/01/28(水) 02:32:59
http://www11.uploader.jp/user/sutoreto/images/sutoreto_uljp00001.txt

これは6×6マスのオセロをプレイした時に分岐する数を数えるプログラムなんですが、
途中でメモリが足りなくなってフリーズしてしまいます。
どうにかpickleを使ってフリーズせずに最後まで数える事ができるプログラムにできないでしょうか?
自分で試行錯誤してみたのですがどうしても上手くいきませんでした。
764デフォルトの名無しさん:2009/01/28(水) 08:09:42
事故解決しました
お騒がせしました
765デフォルトの名無しさん:2009/01/28(水) 11:18:28
自己解決してませんが。
お願いします。答えをください。
766デフォルトの名無しさん:2009/01/28(水) 13:26:55
自己解決禁止
767デフォルトの名無しさん:2009/01/28(水) 15:44:47
自己解決しても張ったほうがいいですか?
とても見栄えのいいものじゃないんで恥ずかしいんですが・・・
768デフォルトの名無しさん:2009/01/28(水) 18:19:03
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |
|  ,,ノ(、_, )ヽ、,,   |
|   ,;‐=‐ヽ   .:::::|
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
       .n:n    nn
      nf|||    | | |^!n
      f|.| | ∩  ∩|..| |.|
      |: ::  ! }  {! ::: :|
      ヽ  ,イ   ヽ  :イ
769デフォルトの名無しさん:2009/01/29(木) 00:46:02
自己解決厨はまだ粘着してたのか。
770デフォルトの名無しさん:2009/01/29(木) 13:49:54
>>763
ちらっと走らせてみたけど、幅優先でやってるんじゃ?
10手目(?)ですら264994個も状態がある。
天文学的な容量のHDDでも持ってるんなら別だけど、
pickleとかじゃ解決しないような気がする。
771デフォルトの名無しさん:2009/01/29(木) 22:58:12
>>751-752
レベル高すぎ
もう少し簡単なのにしてくれないと誰もこなせないよ
772デフォルトの名無しさん:2009/01/29(木) 23:00:44
773デフォルトの名無しさん:2009/01/30(金) 12:34:40
>>747
書籍のページにランキングがあるんだよ。
総合ランキングを並べてみるな。

http://www.amazon.co.jp/dp/4777513211/ 恥ぱい
126,738位

http://www.amazon.co.jp/dp/4777513688/ 恥ぱいネットワーク
400,898位

http://www.amazon.co.jp/dp/4777514196/ 恥ぱい3
13,868位

http://www.amazon.co.jp/dp/479733665X/ みんPy
4,261位

http://www.amazon.co.jp/dp/4797341815/ みんPy Webアプリ編
102,274位

http://www.amazon.co.jp/dp/4774130567/ TurboGears + Python
295,137位

http://www.amazon.co.jp/dp/4048672096/ 開発のプロが教える標準Django完全解説
102,570位

http://www.amazon.co.jp/dp/4839922829/ Jythonプログラミング
41,324位
774デフォルトの名無しさん:2009/01/30(金) 13:49:15
>書籍のページにランキングがあるんだよ
そのランキングを(Amazonの中のひとが)どうやって出してるかって話では?
775デフォルトの名無しさん:2009/01/30(金) 13:52:11
注文履歴見りゃ判るだろうに
776デフォルトの名無しさん:2009/01/30(金) 14:05:17
わろす
777デフォルトの名無しさん:2009/01/30(金) 14:05:40
>>745
どの部門に入っているかで順位入れ替わる可能性あるのか
部門新設するようなネタなら1位狙える訳だ
778デフォルトの名無しさん:2009/01/30(金) 14:07:52
総合ランキングで比べないと意味がないよね。
779デフォルトの名無しさん:2009/01/30(金) 14:52:26
>>773ではぶっちぎり再会の
>http://www.amazon.co.jp/dp/4777513688/ 恥ぱいネットワーク
>400,898位

>>745では比較的検討しているように見える
これはネットワーク系書籍が少ないことに由来するためであろうか
同部門の他の書籍(というか部門のかたまりのようなもの)が総合ランクで
どの辺の位置にいるのかも考慮する必要があるね
あるいは同部門の他の書籍との格差?(もしそれが定義出来るなら)も必要
A部門の5位はB部門の10位より下とかね
780デフォルトの名無しさん:2009/01/30(金) 15:01:32
同じ条件で比較しないと意味無いだろ。
当たり前のことほざくな。
781デフォルトの名無しさん:2009/01/30(金) 19:01:54
恥ぱい3は3万に下がっているのに、みんぱいは4千のままだ。
どうなってるの?
売れるとランキングが上がって、売れないと下がる仕組みなのかな?
782デフォルトの名無しさん:2009/01/31(土) 06:50:16
>>773
サンクス。書籍のページにあるのか。
スクレイピングして言語別のama書籍ランキングとか作れそうだね。面白そうだ
誰かやランかな
783デフォルトの名無しさん:2009/02/04(水) 11:35:30
http://www.amazon.co.jp/dp/4873112109

元祖はじパイも売れてないんだな。
ランキング10万台って恥パイと変わらないだろ。みんパイを調べたら6000台だったぞ。
翻訳者が必死になるわけだ。
784デフォルトの名無しさん:2009/02/07(土) 12:57:54
なるほど
ありがとうございました
785デフォルトの名無しさん:2009/02/12(木) 16:50:37
[1] 授業単元:Python
[2] 問題文(含コード&リンク):
1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる
並べ方が全部で何通りあるかとその並びをすべて列挙する
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:

534681297
685293714
948367125
153472869
426538971
261759483
817945632
379126548
792814356
786デフォルトの名無しさん:2009/02/12(木) 17:02:05
787デフォルトの名無しさん:2009/02/12(木) 17:08:55
Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/785
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/542
Rubyの宿題教えてください。2限目
http://pc11.2ch.net/test/read.cgi/tech/1200175247/476

こんなんで数独の掲載料もらえるなら俺だって問題送りたい
無言であっさり方向性出てるあたりさすがPyという気はする
788デフォルトの名無しさん:2009/02/13(金) 01:26:16
何故かリリカルLispスレにも来てたんだが
http://pc11.2ch.net/test/read.cgi/tech/1183396621/141-

スクロールした形を数えないことにしたら16億くらいかなーとか
思ったんだけどそんな単純な話じゃないのね。
ttp://en.wikipedia.org/wiki/Latin_square
789デフォルトの名無しさん:2009/03/29(日) 00:11:48
[1] 授業単元:Python
[2] 問題文(含コード&リンク): 下の例参照
与えられた数字のみからなる文字列から各桁の数字に分割し、
隣り合う数字の合計の下一桁の値を並べたものを次の文字列とし、
結果が一桁になるまで繰り返しそれぞれの過程の文字列を出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限: 例
525123214112431
77635535523674
4398088075931
727886872424
99564459666
8410894522
251873974
76950261
3545287
899705
78675
5432
95
4
790デフォルトの名無しさん:2009/03/29(日) 00:12:29
[1] 授業単元:Python
[2] 問題文(含コード&リンク): 課題2
>>789 の出力において(上から1段目だけは入力なので)
上から2段目から最後の段までに現れる0から9数字の
総出現数と各数字毎の出現比率を出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:

129個
0: 10回 3%
1: 43回 20%
2: 8回 2%
...
9: 18回 6%
のように出力してください。
おながいします
791デフォルトの名無しさん:2009/03/29(日) 00:13:25
[1] 授業単元:Python
[2] 問題文(含コード&リンク): 課題3
>>790 のスクリプト名を p2.py とする
その入出力について入力はスクリプトへの標準入力として例えば
echo 525123214112431 | p2.py
という形で受け取れるようにし、
10, 0.03, 43, 0.20, 8, 0.02, ... 18, 0.06, 129
の様に0から9までの出現数、出現比率(末尾に総数)をカンマ区切りで
出力するように変更し、
さらに新たなスクリプト p3.py から別プロセスとして p2.py を起動し、
標準出力を介して 111111111 から 999999999 までの連続する数字を与え、
それぞれの結果を出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:
792デフォルトの名無しさん:2009/03/29(日) 00:14:09
[1] 授業単元:Python
[2] 問題文(含コード&リンク): 課題4
>>791 の出力について
111111111 から 999999999 までの連続する数字を与える代わりに
N 桁の全ての数字を与え、N を 2 〜 9 まで変化させたときに
各 N における全ての出現数、出現比率を0から9までの数字毎に合計し、出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:
N = 2 のとき 10 〜 99 について
10 -> 1 が 1回
11 -> 2 が 1回
12 -> 3 が 1回
...
99 -> 18, 9 -> 1 が 1回, 8 が 1回, 9 が 1回
の回数の合計として
0から9までの出現数、出現比率(末尾に総数)をカンマ区切りで出力する。
よろしくおねがいします。
793デフォルトの名無しさん:2009/03/29(日) 00:15:21
794デフォルトの名無しさん:2009/04/11(土) 17:13:18
またそういうことを
795デフォルトの名無しさん:2009/04/14(火) 23:18:01
6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点
(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!
796デフォルトの名無しさん:2009/04/15(水) 00:12:36
マルチ乙
797デフォルトの名無しさん:2009/04/17(金) 00:02:27
頂点を自由に決められるようにするのは何気に難しいような・・・。
ヘロンの公式を使うか、y2 == y3 のような制約があれば簡単なんだけど。
初歩的なことを見落として面倒なことをしている希ガス。ツッコミ歓迎。

# -*- coding: utf-8 -*-
import math
x1, y1 = 2.0, 4.0
x2, y2 = 4.0, 0.0
x3, y3 = 0.0, 2.0
# P1 (x1, y1) と P2 (x2, y2) を通る直線 y = ax + b の係数 a, b を求める
a = (y2 - y1) / (x2 - x1)
b = y1 - a * x1
# 直線 y = y3 と直線 y = ax + b の交点 P4 (x, y3) を求める
x = (y3 - b) / a
# P3 (x3, y3) と P4 (x, y3) が成す線分の長さを求める
bottom = math.fabs(x - x3)
# P1, P3, P4 が成す三角形の面積を求める
height1 = math.fabs(y1 - y3)
area1 = bottom * height1 / 2.0
# P2, P3, P4 が成す三角形の面積を求める
height2 = math.fabs(y2 - y3)
area2 = bottom * height2 / 2.0
# 二つの三角形の面積を加減して P1, P2, P3 が成す三角形の面積を求める
if y1 < y3 < y2 or y1 > y3 > y2:
  print(area1 + area2)
else:
  print(math.fabs(area1 - area2))
798デフォルトの名無しさん:2009/04/17(金) 00:12:05
799デフォルトの名無しさん:2009/04/17(金) 00:33:57
>>797
点(x0,y0)と直線(ax+by+c=0)との距離dは
d=abs(a*x0+b*y0+c)/sqrt(a**2+b**2)
800デフォルトの名無しさん:2009/04/17(金) 02:14:05
>>798-799 ありがとう。

# -*- coding: utf-8 -*-
import math
x1, y1 = 2.0, 4.0
x2, y2 = 4.0, 0.0
x3, y3 = 0.0, 2.0
# P1 (x1, y1) と P2 (x2, y2) の距離を求める
bottom = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
# P1 と P2 を通る直線 ax + by + c = 0 の係数 a, b, c を求める
a = y1 - y2
b = x2 - x1
c = x1 * y2 - x2 * y1
# P3 (x3, y3) から直線 ax + by + c = 0 に下ろした垂線の長さを求める
height = math.fabs(a * x3 + b * y3 + c) / math.sqrt(a ** 2 + b ** 2)
# P1, P2, P3 の成す三角形の面積を求める
print(bottom * height / 2.0)
801デフォルトの名無しさん:2009/04/17(金) 02:15:53
これって
bottom = math.sqrt(a ** 2 + b ** 2)
height = math.fabs(a * x3 + b * y3 + c) / bottom
だから
print(math.fabs(a * x3 + b * y3 + c) / 2.0)
となって結局

# -*- coding: utf-8 -*-
import math
x1, y1 = 2.0, 4.0
x2, y2 = 4.0, 0.0
x3, y3 = 0.0, 2.0
# P1 (x1, y1), P2 (x2, y2), P3 (x3, y3) の成す三角形の面積を求める
print(math.fabs((y1 - y2) * x3 + (x2 - x1) * y3 + (x1 * y2 - x2 * y1)) / 2.0)

と単純化できるのかな。うーん、>>797とは比較にならないシンプルさ。
802デフォルトの名無しさん:2009/04/17(金) 06:14:19
ヘロンよりもシンプルかもね
803デフォルトの名無しさん:2009/04/17(金) 15:50:56
つ外積
((x2-x1)(y3-y1)-(x3-x1)(y2-y1))/2
804デフォルトの名無しさん:2009/04/18(土) 02:46:54
すげーなおまいら
805デフォルトの名無しさん:2009/04/19(日) 20:40:42
ちょw
806デフォルトの名無しさん:2009/04/19(日) 21:51:22
スレ違い
807デフォルトの名無しさん:2009/04/26(日) 10:44:07
最近 何かの本で見た問題なんだけど、

1辺の長さが1の正三角形の各頂点から有理数の距離にある三角形内部の点を少なくとも3つ求めよ。


おまいら わかりますか?
808デフォルトの名無しさん:2009/04/26(日) 19:23:05
ええと。

1/3回転の点対称で、不動点(中央)ではないことは明らかだから、
1つ見つければあと2つは自動的に見つかる。

で、その問題の一つは...3平方の定理を連立させて平方根が消える解を求めるのかな?
809デフォルトの名無しさん:2009/04/26(日) 19:34:49
プログラムのスレ的回答は、
点をランダムに選んで距離をチェック
のループでなんとかなるだろう。
810デフォルトの名無しさん:2009/04/27(月) 01:21:56
>>808
平面座標は(x,y)で表すから2点からの距離を有理数とする2つの方程式で求まるはず。
3点からの距離を有理数とするためには、2元連立方程式の中から条件に合うのを
探す必要があるんとちゃうかな?

>>809
距離を有理数にするには座標は無理数になる・・・・かもな。
そうするとランダムに座標を決めて条件に合うのを探すのはむりちゃうかな?
811デフォルトの名無しさん:2009/04/27(月) 06:26:37
プログラム的にピタゴラスで距離計算して
(√hoge)の結果が有理数か無理数か区別付くのか?
812デフォルトの名無しさん:2009/04/27(月) 13:26:21
点の座標にルート3とか入ってると難しいな。
まず、
「座標がすべて整数となる正三角形の頂点を求めよ(大きさは問わない)」
って方が取り組みやすいのかな。
813デフォルトの名無しさん:2009/04/27(月) 19:18:43
この問題って辺の上だけじゃなく内側にも点が見つかるはずなんですかね?
力技で解いてみたけど辺の上にある点しか見つからない。
A=3/8, B=5/8, C=7/8
A=5/21, B=16/21, C=19/21
A=7/15, B=8/15, C=13/15
A=7/40, B=33/40, C=37/40
A=11/35, B=24/35, C=31/35
A=13/48, B=35/48, C=43/48
 :
814813:2009/04/27(月) 19:23:17
import math
def gcd(a, b):
  if a < 0: a = -a
  if b < 0: b = -b
  while b > 0:
    a, b = b, a % b
  return a
class Rational:
  def __init__(self, numerator, denominator):
    self.n = numerator; self.d = denominator
  def __repr__(self):
    return "{0}({1}, {2})".format(self.__class__.__name__, self.n, self.d)
  def add(self, r):
    n = self.n * r.d + r.n * self.d; d = self.d * r.d; x = gcd(n, d)
    return Rational(n // x, d // x)
  def sub(self, r):
    n = self.n * r.d - r.n * self.d; d = self.d * r.d; x = gcd(n, d)
    return Rational(n // x, d // x)
  def mul(self, r):
    n = self.n * r.n; d = self.d * r.d; x = gcd(n, d)
    return Rational(n // x, d // x)
  def div(self, r):
    n = self.n * r.d; d = self.d * r.n; x = gcd(n, d)
    return Rational(n // x, d // x)
  def equal(self, r):
    return self.n == r.n and self.d == r.d
  def real(self):
    return float(self.n) / float(self.d)
815813:2009/04/27(月) 19:30:38
def rational_range(N):
  for d in range(2, N):
    yield Rational(1, d)
  for n in range(2, N):
    for d in range(n+1, N):
      if gcd(n, d) == 1:
        yield Rational(n, d)
def main():
  ONE = Rational(1, 1); TWO = Rational(2, 1)
  cos_30 = math.cos(math.pi * 30 / 180)
  n = 50
  for A in rational_range(n):
    for B in rational_range(n):
      if A.real() > B.real() or A.add(B).real() < 1.0: continue
      D = ONE.add(A.mul(A)).sub(B.mul(B)).div(TWO) # D=(1+A^2-B^2)/2
      if D.real() < cos_30 * A.real(): continue
816813:2009/04/27(月) 19:32:38
      X = A.mul(A).sub(D.mul(D)) # X=A^2-D^2
      if X.real() == 0.0:
        T = D.sub(Rational(1, 2))
        Y = T.mul(T).add(Rational(3, 4)) # Y=(D-1/2)^2+3/4
        for C in rational_range(n):
          if C.mul(C).equal(Y):
            print(A, B, C)
      else:
        T = D.sub(Rational(1, 2))
        Y = T.mul(T).add(Rational(3, 4)).add(X) # Y=(D-1/2)^2+3/4+X
        for C in rational_range(n):
          T = C.mul(C).sub(Y)
          if T.mul(T).div(X).equal(Rational(3, 1)):#(C-Y)^2/X==3
            print(A, B, C)
main()
817813:2009/04/27(月) 20:30:04
説明図 http://www1.axfc.net/uploader/He/so/221324.png

1. 有理数 A, B を生成 (A < 1, A + B < 1)
2. D = |A^2 - B^2 + 1| / 2 を計算 (D < A cos(30))
3. X = A^2 - D^2 を計算
4. 有理数 C を生成。
5. C == sqrt((D-1/2)^2+3/4) (X == 0 のとき) または
C == sqrt((D-1/2)^2+(sqrt(3/4)-X)^2) (それ以外) ならば
A, B, C を解として出力。

rational_range() で有限の有理数の集合を作って、
1. と 4. でループを回して A, B, C の組み合わせを作っています。
有理数がからむ計算はすべて有理数のまま計算しています
(5. の条件式は平方根が要らない形に直して計算)。

また初歩的なことを見落としている希ガス。ツッコミ歓迎。
818デフォルトの名無しさん:2009/04/27(月) 20:35:27
あ、2. の不等号が逆でした。連投スマソ
819デフォルトの名無しさん:2009/04/27(月) 21:18:43
まだ中身見てないけどRationalはfractionsモジュールを使えばいいと思うな
http://docs.python.org/library/fractions.html
820デフォルトの名無しさん:2009/04/27(月) 21:25:53
A(0,0) B(1,0) C(1/2,sqrt(3)/2)
を正三角形の頂点,各頂点への距離をa,b,cとすると

P1(997/2709,sqrt(3)*64/903) a:1051/2709 b:1744/2709 c:2045/2709
P2(457/1029,sqrt(3)*44/343) a:73/147 b:88/147 c:95/147
P3(723/1568,sqrt(3)*195/1568) a:57/112 b:65/112 c:73/112

のとりあえず3点が求まりました。
821デフォルトの名無しさん:2009/04/28(火) 08:09:11
各距離を
a = j/m
b = k/m
c = l/m

Pの座標を(x,y)を
x = q/m
y = sqrt(3)*r/m
とするとj,k,l,m,q,rをすべて自然数とすることができました。
後はルートの中が平方数となるようなm,q,rの組を探すだけ

対称な点を省くためと探索範囲を狭くするために
x > 0
y > 0
x < 1/2
y < x/sqrt(3)
の範囲を探しました。

mを10から3000まで1づつ増やしてq,rを探したけど結構時間がかかります。
822デフォルトの名無しさん:2009/04/28(火) 21:38:39
とりあえずlispのプログラムを晒します。
pythonは文法を覚えてる最中でまだプログラムは無理
誰かpythonへ変換してもらえるとありがたいです。
823デフォルトの名無しさん:2009/04/28(火) 21:39:40
;triangle
(labels ((dv (x y) (/ (round (sqrt x)) y))
(sqrtest (x) (let ((a (round (sqrt x)))) (equal x (* a a))))
(lt (x y) (< (car x) (car y)))
(fsj (q r) (+ (* q q) (* 3 r r)))
(fsk (q r m) (+ (* q q) (* 3 r r) (* -2 m q) (* m m)))
(fsl (q r m) (+ (* q q) (* 3 r r) (* -1 m q) (* -3 m r) (* m m))))
(defun solv3 (start end)
(let ((j 0) (k 0) (l 0) (ans nil) (point nil))
(do ((m start (1+ m)))
((> m end) (sort ans #'lt))
(do ((q 1 (1+ q)) (limq (/ m 2)))
((>= q limq))
(do ((r 1 (1+ r)) (limr (/ q 3)))
((>= r limr))
(if (and (sqrtest (setf j (fsj q r)))
(sqrtest (setf k (fsk q r m)))
(sqrtest (setf l (fsl q r m))))
(progn
(setf point
(list (/ q m) (/ r m) (dv j m) (dv k m) (dv l m)))
(if (not (member point ans :test #'equal))
(progn
(push point ans)
(apply #'format t
"P(~A,~A*sqrt(3)) a:~10A b:~10A c:~10A~%"
point)))))))))))
824デフォルトの名無しさん:2009/04/28(火) 21:46:24
(time (solv3 5000 15000))
;
;>>823,>>824がlispのプログラムです。
825デフォルトの名無しさん:2009/04/29(水) 00:33:24
ちんこ
826デフォルトの名無しさん:2009/04/29(水) 05:23:34
パイソンむずかしす
827デフォルトの名無しさん:2009/05/06(水) 00:29:51
&heart;
828デフォルトの名無しさん:2009/05/10(日) 11:34:46
f
829デフォルトの名無しさん:2009/05/10(日) 14:11:37
32bit整数の範囲で
nとn^2+2がともに素数となるnを求めてください
素数テーブル
ビッグエンディアン ttp://www.opendogs.org/pub/pn_be.dat.gz
リトルエンディアン ttp://www.opendogs.org/pub/pn_le.dat.gz
830デフォルトの名無しさん:2009/05/11(月) 12:00:01
>>829
『3』ですか?
831デフォルトの名無しさん:2009/05/12(火) 23:02:25
『3』でおkです。

くだらん問題出すな ボケ!

832デフォルトの名無しさん:2009/05/20(水) 23:11:17
ちんこ
833デフォルトの名無しさん:2009/05/28(木) 19:14:46
【 課題 】引数として英数字からなる文字列を1つ与えて呼び出すと,その全体,最後の1文字を削ったもの,最後の2文字を削ったもの,…と1文字になるまで表示する関数を定義せよ.値を返す必要はない.

次に,キーボードから文字列を読み込み,読み込んだ文字列を引数として定義した関数を呼び出すようにせよ。

【 用語 】
【 期限 】5月29
【 Ver  】なし
【 補足 】だれかお願いします。
834デフォルトの名無しさん:2009/05/28(木) 19:18:36
【 課題 】2つの引数xとyを取り,x2+y2の値を計算して返す関数func1を定義せよ.いくつかの引数で呼び出して結果を確認すること.
【 期限 】5月29

連続ですみません。だれかよろしくおねがいします。
835デフォルトの名無しさん:2009/05/28(木) 19:46:10
>>833
# Python 3.0.1
def foo(s):
    for i in range(len(s), 0, -1):
        print(s[:i])

s = input("# ")
foo(s)
836デフォルトの名無しさん:2009/05/28(木) 19:47:02
>>834
# Python 3.0.1
import random

func1 = lambda x, y: (2 * x) + (2 * y)

for i in range(10):
    x = random.randint(0, 100)
    y = random.randint(0, 100)
    s = "{0}*2+{1}*2={2}".format(x, y, func1(x, y))
    print(s)
837デフォルトの名無しさん:2009/05/28(木) 19:51:02
>>833
def hoge(s):
    l = len(s)
    while(s[:l]):
        print s[:l]
        l -= 1

hoge(raw_input())
(↑python3.xならhoge(input()) )

>>834
x2, y2ってそれぞれxの2乗, yの2乗という解釈でいいのかなこれ

def func1(x, y):
    return x**2 + y**2
838デフォルトの名無しさん:2009/05/28(木) 21:08:40
>835-837 ありがとうございます。明日確認して報告いたします。


839デフォルトの名無しさん:2009/05/28(木) 21:12:24
授業でPython3使うところは少ない気がするんだが、大丈夫かいな
840デフォルトの名無しさん:2009/05/28(木) 21:59:24
【 Ver  】なし
841デフォルトの名無しさん:2009/05/29(金) 02:03:01
>>833
def foo(s):
while(s):
print s
s=s[:-1]

s = input("# ")
foo(s)
842デフォルトの名無しさん:2009/05/30(土) 17:45:18
833 834 です。833はうまくいきましたが834はなんかできませんでした。

[課題1]1から20までのすべての整数で割り切れる最小の数を求めるプログラムを書け.
[課題2]キーボードから自然数を入力すると,その約数をすべて表示するプログラムを書け.

これもよろしくおねがいします。.
843デフォルトの名無しさん:2009/05/30(土) 18:19:33
課題1


課題2
答えは一応出ますが入力が大きい時の効率化を考えてません

target = input()
for i in xrange(1, target+1):
    if target % i == 0:
        print i,
844デフォルトの名無しさん:2009/05/30(土) 18:20:28
課題1書く前に送ってしまった。

def gcd(a, b):
    while(b):
        a, b = b, a%b
    return a

result = 1
for i in xrange(2, 21):
    result = (result * i) / gcd(result, i)

print result
845デフォルトの名無しさん:2009/05/30(土) 20:29:30
>>843
少なくとも割ってあまり0なら商の方も約数だし
確認は √target まででいいはずだし
846デフォルトの名無しさん:2009/05/30(土) 21:08:29
>>845
指摘ありがとうございます。修正しました

import math
target = input()
result = []
for i in xrange(1, int(math.sqrt(target))+1):
    if target % i == 0:
        result.extend([i, target/i])

print ', '.join(str(x) for x in sorted(result))
847デフォルトの名無しさん:2009/05/30(土) 21:16:30
すいません、さらに修正

-        result.extend([i, target/i])
+        result.append(i)
+        if target/i != i:
+            result.append(target/i)
848デフォルトの名無しさん:2009/05/31(日) 03:51:09
結局 if target/i != i: をやることになるなら
ループは for i in xrange(1, target+1): でよくて
if target/i < i: を終了条件にして中断すれば良いと思う
849デフォルトの名無しさん:2009/05/31(日) 05:15:50
すげーなおまいら
850デフォルトの名無しさん:2009/06/01(月) 14:47:47
次の指数関数のテイラー展開を用いて自然対数の底 e を計算せよ。

e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + ...
= 2.7182818284...
851デフォルトの名無しさん:2009/06/01(月) 18:10:27
import math
s = 0.0
for i in xrange(20):
 s += 1.0 / math.factorial(i)
 print s
852デフォルトの名無しさん:2009/06/01(月) 18:25:18
動かないなと思ったらmath.factorialは2.6から追加されたのか
853デフォルトの名無しさん:2009/06/01(月) 19:25:34
出題者的には階乗もコーディングしてほしいだろうね、きっと。
854デフォルトの名無しさん:2009/06/01(月) 21:26:51
出題者的には浮動小数点数じゃなくて多倍長演算で有効桁xxx桁まで求めてほしいだろうね、きっと。
問題には書かれてないけど。
855デフォルトの名無しさん:2009/06/01(月) 22:10:04
そこまでエスパーするの無理><
856デフォルトの名無しさん:2009/06/01(月) 22:28:42
えー
だって float 精度で充分なら
math.e に敵うものはないよ
857デフォルトの名無しさん:2009/06/01(月) 22:32:48
ここはdecimalを使ってですね
858デフォルトの名無しさん:2009/06/01(月) 22:40:39
fractionsも捨てがたい
859デフォルトの名無しさん:2009/06/02(火) 03:45:35
>>854
では模範解答をおながいします
860デフォルトの名無しさん:2009/06/03(水) 11:08:32
861デフォルトの名無しさん:2009/06/04(木) 02:21:17
>>3 の予言通りになりそうだ
862デフォルトの名無しさん:2009/06/08(月) 23:47:00
4. 正三角形と正四角形
Polygonをスーパークラスとして,正三角形(Triangle),正四角形(Square)を表現するクラスをそれぞれ定義せよ.

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


お願いします!
863デフォルトの名無しさん:2009/06/09(火) 00:18:08
class Polygon(object):
 def __init__(self, size):
  self.size = size
 def area(self):
  raise NotImplementedError("%s.area() is not implemented yet." % self.__class__.__name__)

class Triangle(Polygon):
 def area(self):
  n = self.size
  return 1.73 * n * n / 4

class Square(Polygon):
 def area(self):
  n = self.size
  return n * n

あとはまかせた
864デフォルトの名無しさん:2009/06/09(火) 04:26:32
import math

class Polygon(object):
 def __init__(self, angles, length):
  self.angles = angles
  self.length = length
 def area(self):
  t = 2.0 * math.pi / self.angles
  return (self.angles * self.length * self.length * math.sin(t)) / (4.0 * (1.0 - cos(t)))

class Triangle(Polygon):
 def __init__(self, length):
  super(Triangle, self).__init__(3, length)

class Square(Polygon):
 def __init__(self, length):
  super(Square, self).__init__(4, length)

あとはまかせた
865デフォルトの名無しさん:2009/06/09(火) 04:31:21
まちがえた orz
cos(t) を math.cos(t) にしてください
866デフォルトの名無しさん:2009/06/09(火) 04:40:00
>>862-864
Polygonの引数が辺の長さのみとなると
正多角形とする暗黙の了解でもあるのかな
(Squareは正方形でいいけど
Triangleは正三角形とは限らないのでは)
そうでなければ任意の多角形を考慮するべきで
Polygonの引数は辺の長さのリストの方が望ましい
867デフォルトの名無しさん:2009/06/09(火) 04:54:00
問題
最小の内角が120度の多角形がある。
それに続く内角がその前の角より5度ずつ大きい多角形を作るとき、
その図形は何角形になるか?
(答えは2つあります。)

お願いします!
868デフォルトの名無しさん:2009/06/09(火) 14:50:18
スレ違い?
869デフォルトの名無しさん:2009/06/09(火) 16:42:09
スレ違い
870デフォルトの名無しさん:2009/06/09(火) 22:10:23
どうせ2つ目は凹型多角形なんだろ
871デフォルトの名無しさん:2009/06/10(水) 01:56:09
n角形の内角の和は 180(n-2)

初項 120 公差 5 の等差数列の和は
a(1) から a(n) まで
(120+120+5(n-1))n/2

従って
(120+120+5(n-1))n/2 = 180(n-2)
を解くと
n = 9, n = 16

9角形(凸型)
16角形(凹型)
872デフォルトの名無しさん:2009/06/10(水) 02:00:48
>>864
(self.angles * self.length * self.length * math.sin(t)) / (4.0 * (1.0 - math.cos(t)))

この式どこから出てきたん?
873デフォルトの名無しさん:2009/06/10(水) 09:53:14
すげーなおまいら
874デフォルトの名無しさん:2009/06/10(水) 21:55:15
>863-864
そのあとが気になる
875デフォルトの名無しさん:2009/06/11(木) 08:47:05
周の長さはnaだからな
簡単すぎてやるきがおきない
876デフォルトの名無しさん:2009/06/12(金) 08:05:58
>>874

if __name__ == __main__:
 print("Triangle %d %d", 3, Triangle(1).area())
 print("Square %d %d", 4, Square(1).area())
877デフォルトの名無しさん:2009/06/17(水) 06:39:22
 2つの自然数の最大公約数を求める(ユークリッドの互除法)

a,b = input(), input()

#再帰関数
def gcd(a, b):
    if b == 0:
        return a
    else:
        gcd(b, a%b)
print d(a,b)

2つの自然数の最小公倍数を求める。

#上のgcdを用いて
print a*b/gcd(a,b)
878デフォルトの名無しさん:2009/06/17(水) 06:44:10
#エラトステネスの篩
#(コードは煩雑そうに見えるが、速度が圧倒的に速い。
# 大きな数までの素数表が必要な場合に必要な方法。)
a = range(10000)
a[1] = 0 # 1 は素数ではない
for p in a:
    if not p:
        continue
    elif p > 100: # 100 = sqrt(10000)
        break
    else:
        for multi in xrange(p+p, 10000, p):
            a[multi] = 0

# この時点で、aは、素数p番目にはpが、それ以外には0が入ったリストになっている。
a = [x for x in a if x]
for x in a: print x
879デフォルトの名無しさん:2009/06/17(水) 10:31:51
a = [x for x in a if x]
これってもっと簡単に書けない?
880デフォルトの名無しさん:2009/06/17(水) 12:18:35
for x in a: if x: print x
あるいは
print '\n'.join(str(x) for x in a if x)
881デフォルトの名無しさん:2009/06/18(木) 02:19:20
ju
882デフォルトの名無しさん:2009/06/18(木) 02:32:44
a = filter(None, a)
883デフォルトの名無しさん:2009/06/18(木) 02:38:11
a = filter(bool, a) でもいいか。
884デフォルトの名無しさん:2009/06/22(月) 02:18:05
>>853
def fact(n):
 if n<=1: return 1
 else: return n*fact(n-1)

e=0.0
for n in xrange(100):
 e+=1.0/fact(n)

e
2.7182818284590455
math.exp(1)
2.7182818284590451
885デフォルトの名無しさん:2009/06/24(水) 05:38:07
floatの精度(machine epsilon)を確認する

(1)yに1を入れ
(2)yを2で割って
(3)yを表示
(4)1+yを1と比較し
(5)区別出来るときは(2)に戻る
(6)区別出来なくなったら終了
886デフォルトの名無しさん:2009/06/24(水) 05:46:13
 y=1.0
 while(True):
  y/=2.0
  print y
  if 1.0+y-1.0==0.0:
   break

結果が違うんですけどなぜでしょうか?

 y=1.0
 while(True):
  y/=2.0
  print y
  if y==0.0:
   break
887デフォルトの名無しさん:2009/06/24(水) 17:58:25
888デフォルトの名無しさん:2009/06/25(木) 14:59:43
ありがとん
889デフォルトの名無しさん:2009/07/13(月) 09:32:50
たとえば
3481
という数字(4桁/0含む)が与えられたとき
0 = 3 + 4 - 8 + 1
1 = 3 + 4 - 8 * -1
2 = -(3 + 4 - 8 - 1)
3 = 3 * 4 - 8 - 1
4 = (3 / (4 + 8))^-1
...
のように加減乗除のみで整数を順に造っていってください
890デフォルトの名無しさん:2009/07/13(月) 11:57:58
4 = 3 * 4 - 8 * 1
でいいじゃない。 ^-1って加減乗除なの?
891デフォルトの名無しさん:2009/07/13(月) 13:33:08
- ( ) も反則のような稀瓦斯
892デフォルトの名無しさん:2009/07/13(月) 20:27:26
>>890
bitwise xorは反則だよな
893デフォルトの名無しさん:2009/07/13(月) 22:01:34
0 : ((3) + ((4) - ((8) - (1))))
1 : (((3) + (4)) / ((8) - (1)))
2 : (-(3) - ((4) - ((8) + (1))))
3 : (((3) * (4)) - ((8) + (1)))
4 : (((3) * (4)) - ((8) * (1)))
5 : (((3) * (4)) - ((8) - (1)))
6 : ((3) - ((4) - ((8) - (1))))
7 : ((3) - ((4) - ((8) * (1))))
8 : ((3) - ((4) - ((8) + (1))))
9 : ((3) * (-(4) + ((8) - (1))))
10 : (-(3) + ((4) + ((8) + (1))))
11 : (((3) * (-(4) + (8))) - (1))
12 : ((3) * (-(4) + ((8) * (1))))
13 : (((3) * (-(4) + (8))) + (1))
14 : ((3) + ((4) + ((8) - (1))))
15 : ((3) + ((4) + ((8) * (1))))
16 : ((3) + ((4) + ((8) + (1))))
19 : (((3) * (4)) + ((8) - (1)))
20 : (((3) * (4)) + ((8) * (1)))
21 : (((3) * (4)) + ((8) + (1)))
25 : (-(3) + ((4) * ((8) - (1))))
28 : (-(3) + (((4) * (8)) - (1)))
29 : (-(3) + ((4) * ((8) * (1))))
30 : (-(3) + (((4) * (8)) + (1)))
894デフォルトの名無しさん:2009/07/14(火) 03:35:07
>>893

1278だとどうなりますか
895デフォルトの名無しさん:2009/07/14(火) 09:25:38
どこがpythonなんだ?
896デフォルトの名無しさん:2009/07/14(火) 09:30:25
聞くべきなのは個別の答えじゃなくアルゴリズムだろjk
897デフォルトの名無しさん:2009/07/14(火) 11:01:38
まあ総当たりになる気がするが
898デフォルトの名無しさん:2009/07/14(火) 12:45:32
899デフォルトの名無しさん:2009/07/14(火) 17:17:14
ありがとうございました
900デフォルトの名無しさん:2009/07/17(金) 13:34:07
3つの自然数の合計が10になるような組み合わせをすべて列挙するプログラムを書け


1+1+8と1+8+1のように並び順が異なるだけのものは同一と考え、重複して出力しないようにすることが望ましい
901デフォルトの名無しさん:2009/07/17(金) 13:38:12
>>> print [(x, y, z) for x in range(1, 10) for y in range(x, 10) for z in range(y, 10) if x + y + z == 10]
[(1, 1, 8), (1, 2, 7), (1, 3, 6), (1, 4, 5), (2, 2, 6), (2, 3, 5), (2, 4, 4), (3, 3, 4)]
902デフォルトの名無しさん:2009/07/17(金) 13:41:32
個数Nが与えられたとき
N個の自然数の合計が10になるような組み合わせをすべて列挙するプログラムを書け
903デフォルトの名無しさん:2009/07/17(金) 14:09:02
>>> def f(n, sum=10, i=1):
...  if n == 1:
...   if i <= sum: return [(sum,)]
...   else: return []
...  else:
...   return [(x,) + rest for x in range(i, sum) for rest in f(n-1, sum-x, x)]
...
>>> f(1)
[(10,)]
>>> f(2)
[(1, 9), (2, 8), (3, 7), (4, 6), (5, 5)]
>>> f(3)
[(1, 1, 8), (1, 2, 7), (1, 3, 6), (1, 4, 5), (2, 2, 6), (2, 3, 5), (2, 4, 4), (3, 3, 4)]
>>> f(4)
[(1, 1, 1, 7), (1, 1, 2, 6), (1, 1, 3, 5), (1, 1, 4, 4), (1, 2, 2, 5), (1, 2, 3, 4), (1, 3, 3, 3), (2, 2, 2, 4), (2, 2, 3, 3)]
904デフォルトの名無しさん:2009/07/17(金) 20:57:53
[課題]
・23本のマッチ棒からなる山があり,2人のプレーヤが山から交互にマッチ棒を取り除く
・一度に取ることのできるマッチ棒は1から3本
・山を空にしたプレーヤが勝ち
人間2人でこのゲームを行なうプログラムを作成せよ.

プログラムでは各プレーヤの手がルールに反していないかどうかのチェックと,勝負がついたかどうかのチェックを行なうこと。
また,最初に山にある本数と,各回に取ることができる最大の本数をプログラムの最初に変数にセットしておき,そこを変えるだけで本数の変化に対応できるようなプログラムにすること。

[期限]7月23
[var]わかりません…
905デフォルトの名無しさん:2009/07/17(金) 21:46:55
906デフォルトの名無しさん:2009/07/20(月) 00:42:33
課題1 成績処理

ファイル data1.txt の中に,次の形式でデータが格納されている.

田中,88
佐藤,65

このとき,ファイルの内容を読み出して,次の2つの処理を行なうプログラムを作成せよ.

* 平均点を計算し,表示する
* 最高得点と最低得点を得点者の名前とともに表示する

ただし,最高得点及び最低得点はそれぞれ1人ずつ(同点はない)と考えて良いものとする.

課題2. ヒストグラム

ファイル data2.txt には,1行に1つずつ点数データが書かれている.このファイルから点数データを読み出し,次のようなヒストグラムを出力するプログラムを書け.ただし,点数データは0以上100以下の整数とする.

* ヒストグラムは10点未満,10点〜19点,20点〜29点,...,80点〜89点,90点〜100点の10区間に分ける
* 人数の数だけ "*" を並べる

課題3 曜日計算

1999年1月1日は金曜日である.この日から2008年12月31日までの10年間に,1日が日曜日になった月が何回あったかを計算するプログラムを作成せよ.

907デフォルトの名無しさん:2009/07/20(月) 01:34:21
>>906
課題1 成績処理

from __future__ import division

data = [i.rstrip().split(',', 1) for i in open('date1.txt')]

f = lambda x: int(x[1])
s = sum(map(f, data))
print 'average:', s / len(data)
print 'max:', max(data, key=f)
print 'min:', min(data, key=f)
908デフォルトの名無しさん:2009/07/20(月) 01:46:20
>>906
課題2. ヒストグラム

t = [0] * 11
for i in open('date2.txt'):
t[int(i.rstrip('\n')) / 10] += 1

t[9] += t[10]
del t[10]

for n, i in enumerate(t):
print "%2d: %s" % (n * 10, '*' * i)
909デフォルトの名無しさん:2009/07/20(月) 01:47:26
>>906
課題3 曜日計算

from datetime import date
print len(list((year, month, 1) for year in range(1999, 2009) for month in range(1, 13) if date(year, month, 1).weekday() == 6))
910デフォルトの名無しさん:2009/07/22(水) 16:45:52
コンピュータと人間か対戦する形で実行する3目並べのプログラムを作成せよ

*先攻、後攻はゲーム毎に乱数で決定する
*人間が手を打った場合、コマを置ける場所かどうかのチェックを行うこと
*勝ち負けの判定を行うこと
*コンピュータ側の手はランダムでも良いが、可能な範囲で工夫してみよ
911デフォルトの名無しさん:2009/07/24(金) 06:21:42
整数nについて,各桁の数の階乗の和S(n)を考える.たとえば,n = 145 とすると,

S(145) = 1! + 4! + 5! = 1 + 24 + 120 = 145
となる.このように,S(n) = n となるn(n≧10)をすべて求めよ.

912デフォルトの名無しさん:2009/07/24(金) 07:07:39
無限にある訳じゃないのか
913デフォルトの名無しさん:2009/07/24(金) 09:45:22
nが9999999以上だと n > S(n)となるので有限個ってことになるだろね。
914デフォルトの名無しさん:2009/07/24(金) 10:11:48
やってみたけど145以外は40585しかなかったよ
915デフォルトの名無しさん:2009/07/24(金) 11:29:09
s(0)=1
s(1)=1
s(2)=2
916デフォルトの名無しさん:2009/07/24(金) 14:15:01
917デフォルトの名無しさん:2009/07/24(金) 19:48:00
    ┌─┐
    │●│
    └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
918デフォルトの名無しさん:2009/08/02(日) 16:02:44
所謂覆面算で
英字一文字が一桁の数字(0-9)で表されるとき
one
+ nine
+ twenty
+ fifty
= eighty
となる組み合わせを検索してください
各行の先頭の文字は0以外です
919デフォルトの名無しさん:2009/08/02(日) 18:24:27
#!/usr/bin/python
import itertools
for o,n,e,i,t,w,y,f,g,h in itertools.permutations(range(10)):
    if 0 in (o,n,t,f,e): continue
    if (100*o + 10*n + e) + (1000*n + 100*i + 10*n + e) + \
       (100000*t + 10000*w + 1000*e + 100*n + 10*t + y) + \
       (10000*f + 1000*i + 100*f + 10*t + y) == \
       (100000*e + 10000*i + 1000*g + 100*h + 10*t + y):
        print (o,n,e,i,t,w,y,f,g,h)
920デフォルトの名無しさん:2009/08/02(日) 19:32:52
ありがとうございました
921デフォルトの名無しさん:2009/08/02(日) 19:37:25
def perm(n, m):
  if m<1:
    yield()
  else:
    for r in perm(n, m-1):
      for x in xrange(n):
        if x not in r:
          yield r + (x,)
def num(b, h, p):
  return reduce(lambda x, y: x * 10 + p[h[y]], b, 0)
def check(a, s):
  c = 0
  h = {}
  for w in a + [s]:
    if w[0] not in h:
      h[w[0]] = c
      c += 1
  d = c
  for w in a + [s]:
    for b in w[1:]:
      if b not in h:
        h[b] = c
        c += 1
  for p in perm(10, c):
    if 0 in p[:d]:
      continue
    if sum([num(w, h, p) for w in a]) == num(s, h, p):
      print '%s=%d' % ('+'.join(str(num(w, h, p)) for w in a), num(s, h, p))
if __name__ == '__main__':
  a, s = raw_input('> ').replace(' ', '').split('=')
  a = a.split('+')
  check(a, s)
922デフォルトの名無しさん:2009/08/02(日) 19:38:05
> send + more = money
9567+1085=10652
> one + nine + twenty + fifty = eighty
984+8584+364832+75732=450132
923デフォルトの名無しさん:2009/09/20(日) 01:30:40
.
924デフォルトの名無しさん:2009/09/23(水) 02:40:24
文字コードがらみのトラブルがいやならpython3かね。
だいぶましになってる。完璧じゃないけど。
925デフォルトの名無しさん:2009/09/23(水) 08:30:03
いや、3の方が文字コードがらみのトラブル多いでしょ。
ライブラリがUTF-8以外に対応してないなんてザラにある。
926デフォルトの名無しさん:2009/09/23(水) 09:41:23
それは3だからじゃねーだろ
927デフォルトの名無しさん:2009/09/23(水) 09:48:09
それも2だからじゃねーだろ
928デフォルトの名無しさん:2009/09/23(水) 12:38:34
2.4以下は糞
929デフォルトの名無しさん:2009/09/24(木) 10:57:16
1.5のクソさに比べたら2.xや3.xはヘブン。
930デフォルトの名無しさん:2009/09/24(木) 14:20:08
今思えばそうだけど、1.5時代はそれはそれで快適に使ってたもんよ(文字コード周りは除く)。
931デフォルトの名無しさん:2009/10/25(日) 15:28:07
>>707
どうみてもゴスリングだろと思ったらそうだった
932デフォルトの名無しさん:2009/11/07(土) 15:36:23
負でない整数nの階乗(n!)は,次のように定義される.

n! = 1 × 2 × 3 × ... × n (n ≧ 1)
0! = 1

引数nを与えるとn!を計算して返す関数fact(n)を定義し,それを用いて0!〜10!を計算して表示するプログラムを作成せよ.
933デフォルトの名無しさん:2009/11/07(土) 15:45:13
>>> def fact(n):
... return n * fact(n-1) if n else 1
...
>>> [fact(x) for x in range(11)]
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
934デフォルトの名無しさん:2009/11/07(土) 15:45:30
fact = lambda n: n * fact(n - 1) if n else 1
for i in range(11):
    print "%d! = %d" % (i, fact(i))
935デフォルトの名無しさん:2009/11/07(土) 15:54:28
引数として英数字からなる文字列を1つ与えて呼び出すと,その全体,最後の1文字を削ったもの,最後の2文字を削ったもの,…と1文字になるまで表示する関数を定義せよ.値を返す必要はない.

次に,キーボードから文字列を読み込み,読み込んだ文字列を引数として定義した関数を呼び出すようにせよ.
936デフォルトの名無しさん:2009/11/07(土) 16:05:22
def foo(s):
    if s:
        print s
        foo(s[:-1])

foo(raw_input())
937デフォルトの名無しさん:2009/11/09(月) 04:16:47
B列に1万近くの数値があり、そこから特定の範囲(例えば100〜101など)に適した数値を
指定したセルに抽出し、複数ある場合はそのしたに並べて抽出するようなプログラムを作りたいのですが、
どのようにしたらよいでしょうか?

Excel2003です
938デフォルトの名無しさん:2009/11/09(月) 13:32:39
??
939デフォルトの名無しさん:2009/11/09(月) 20:28:02
マルチだよそれ
940デフォルトの名無しさん:2009/11/11(水) 02:25:23
ネットワーク接続でHTTP_CONNECTIONをkeep-aliveしたい
urllib2.AbstractHTTPHandler.do_openにある
headers["Connection"] = "close"

headers["Connection"] = "keep-alive"
にすればできそうなのですが

# We want to make an HTTP/1.1 request, but the addinfourl
# class isn't prepared to deal with a persistent connection.
# It will try to read all remaining data from the socket,
# which will block while the server waits for the next request.
# So make sure the connection gets closed after the (only)
# request.
と注意書きがあります。これを無視すると重大な問題が起きるのでしょうか?
941デフォルトの名無しさん:2009/11/12(木) 22:10:04
"/etc/termcap"というファイルを読み込み,#で始まる行の数を数えて行数を表示するプログラムを書け.ファイルの内容を表示する必要はない.
942デフォルトの名無しさん:2009/11/12(木) 22:26:53
2つの引数xとyを取り,x2+y2の値を計算して返す関数func1を定義せよ.
いくつかの引数で呼び出して結果を確認すること.
943デフォルトの名無しさん:2009/11/12(木) 22:27:50
1. まず,いろいろな数値(整数)を1行に1つずつ10個(10行)程度並べたファイル(名前をdata-0501.txtとする)を作成せよ.
2. 次に,data-0501.txtを読み込み,読み込んだ内容を表示しながら合計を計算して表示するプログラムを作成せよ.
944デフォルトの名無しさん:2009/11/12(木) 22:30:39
>>941
import re
print len(re.findall(r'(^#)', open('/etc/termcap').read(), re.M))
945デフォルトの名無しさん:2009/11/12(木) 22:32:29
>>942
x2 y2 ってなに?
946デフォルトの名無しさん:2009/11/12(木) 22:39:49
>>943
python -c 'for x in range(10): print x' | python -c 'import sys; print reduce(lambda a,b: a+int(b.replace("\n","")), sys.stdin.readlines(), 0)'
947デフォルトの名無しさん:2009/11/12(木) 22:57:33
replace いらなかったのと
内容表示しながらということだったので修正
python -c 'for x in range(10): print x' | python -c 'import sys; s=[]; print [s.append(n) or (n, sum(s)) for n in map(int, sys.stdin.readlines())]'
948デフォルトの名無しさん:2009/11/12(木) 23:00:06
>>946-947
ファイルを作成せよって書いてあるのに
パイプで受け渡ししたら題意満たして無いじゃん
949デフォルトの名無しさん:2009/11/12(木) 23:07:51
python -c 'for x in range(10): print x' > data-0501.txt
python -c 'import sys; s=[]; print [s.append(n) or (n, sum(s)) for n in map(int, sys.stdin.readlines())]' < data-0501.txt
950デフォルトの名無しさん:2009/11/12(木) 23:14:21
951デフォルトの名無しさん:2009/11/12(木) 23:15:20
>>940
スレ違い
952デフォルトの名無しさん:2009/11/14(土) 12:04:10
>>941
grep -c "^#" /etc/termcap
953デフォルトの名無しさん:2009/11/14(土) 12:11:24
>>952
それを popen2.popen3() または subprocess で書いたら許してやってもいい
954デフォルトの名無しさん:2009/11/14(土) 14:49:50
1000よりも小さいすべての「3または5の倍数」の合計を計算し,結果を表示するプログラムを作成せよ.
955デフォルトの名無しさん:2009/11/14(土) 14:55:21
>>> sum(e for e in range(1000) if e % 3 == 0 or e % 5 == 0)
233168

ほんとかしら
956デフォルトの名無しさん:2009/11/14(土) 16:28:36
次の手順に従って,入力された値の最大値を求めるプログラムを作成せよ.

1. 空のリストを変数intlistにセットする.
2. キーボードから整数を1つ読み込み,
* 整数が負の値だったら,読み込みは終了して3.へ進む.
* それ以外だったら,intlistの最後にその数を追加して2.を繰り返す.
3. 最大値を覚える変数maxnumを用意し,初期値として適切な値(各自で考えること)を代入する.
4. リストに入っている整数を順に変数iに代入しながら,リストの値がなくなるまで次の操作を繰り返す.
* maxnumとiの値を比較し,iの方が大きければ,maxnumの値をiで置き換える.
5. 最後にmaxnumに入っている値が最大値なので,それを表示する.

957デフォルトの名無しさん:2009/11/14(土) 16:42:53
957
958デフォルトの名無しさん:2009/11/14(土) 18:27:17
>>956
#coding: UTF-8
intlist = []
while 0 == 0:
i = raw_input(u"整数を入力してください\n".encode("cp932"))
if not i.isdigit() and (not i[1::].isdigit() or i[0] != "-"):
print u"\n数値ではありませんでした".encode("cp932")
continue
i = int(i)
if i < 0:
if len(intlist) == 0:
continue
break
intlist.extend([i])
maxnum = -1
for i in intlist:
if i > maxnum: maxnum = i
print maxnum
959デフォルトの名無しさん:2009/11/14(土) 18:32:46
いかにも素人が書いたみたいな雰囲気で完璧だ
960デフォルトの名無しさん:2009/11/14(土) 18:37:21
"100".isdigit() とか初めて知った
try: n = int(raw_input()); except ... とかやるよりいいね
961デフォルトの名無しさん:2009/11/14(土) 19:04:15
負数が入力できない
962961:2009/11/14(土) 19:13:46
>isdigit( )
>
>文字列中に数字しかない場合には真を返し、その他の場合は偽を返します。

(*´・ω・)
963デフォルトの名無しさん:2009/11/14(土) 19:14:31
しまったw
>>962を書いたのは>>960です
964デフォルトの名無しさん:2009/11/15(日) 11:07:38
1. キーボードから氏名と電話番号を読み込み,氏名をキー,電話番号を値としてディクショナリに格納する.
2. 氏名として"END"が入力されるまで1.を繰り返す.
3. "END"が入力されたら,ディクショナリの内容を "氏名\t電話番号\n" の形式でファイルに書き出す.
965デフォルトの名無しさん:2009/11/15(日) 11:33:26
とりあえず脳内でほぼ完成した
966デフォルトの名無しさん:2009/11/15(日) 11:38:54
>>964

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os.path, sys

OUTPUT_FILE_PATH = os.path.expanduser("~/address_book.txt")
address_book = {}
while True:
    name = raw_input(u"氏名: ".encode(sys.stdout.encoding)).decode(sys.stdout.encoding)
    pnum = raw_input(u"電話番号 :".encode(sys.stdout.encoding)).decode(sys.stdout.encoding)
    if name == u"END": break
    address_book[name] = pnum

fp = file(OUTPUT_FILE_PATH, "w+")
for name in address_book:
    text = u"%s\t%s\n" % (name, address_book[name])
    fp.write(text)
fp.close()
967デフォルトの名無しさん:2009/11/15(日) 11:45:05
>text = u"%s\t%s\n" % (name, address_book[name])
text = "%s\t%s\n" % (name.encode("utf-8"), address_book[name].encode("utf-8"))
968デフォルトの名無しさん:2009/11/15(日) 11:50:39
>>986
    name = raw_input(u"氏名: ".encode(sys.stdout.encoding)).decode(sys.stdout.encoding)
    pnum = raw_input(u"電話番号 :".encode(sys.stdout.encoding)).decode(sys.stdout.encoding)

こんな面倒なことしないとだめなん?
969デフォルトの名無しさん:2009/11/15(日) 12:00:07
>>968
あんまり環境(OS)に依存しないようにしてみた。
Windows持ってないからテストできないんだけどちゃんと動いた?
970デフォルトの名無しさん:2009/11/15(日) 12:15:04
ファイル出力の円コーディングは指定されていないようですが
この場合はどうなるんでしょうか?
971デフォルトの名無しさん:2009/11/15(日) 12:16:07
ああ >>967 で訂正されてますね
失礼
972デフォルトの名無しさん:2009/11/15(日) 13:33:28
1. コンピュータは乱数を用いて正解となる値を生成する.値は1以上100以下の整数とする.
2. 人間はその数を推測し,キーボードから入力する.
3. 入力された値が正解であれば,「正解です」というメッセージと何回目の入力で正解したかを表示して終了する.
4. 入力された数が正解より大きければ,「大きすぎます」と表示して2.へ戻る
5. 入力された数が正解より小さければ,「小さすぎます」と表示して2.へ戻る
973デフォルトの名無しさん:2009/11/15(日) 13:52:35
>>972
#coding=utf-8
import random
A=random.randint(1,100)
i=0
while True:
    i+=1
    a=int(raw_input("数字を入力してください"))
    if a==A:
        print "%d回目で正解です"%i
        break
    elif a>A:print "大きすぎます"
    else:print "小さすぎます"
974デフォルトの名無しさん:2009/11/15(日) 14:01:56
import random
import itertools

ans = random.randint(1, 100)

for i in itertools.count(1):
    try:
        n = int(raw_input("# "))
    except ValueError:
        print "数字を入力してください"
        continue
    
    if n == ans:
        print "正解です"
        print i, "回目"
        break
    elif n < ans:
        print "小さすぎます"
    else:
        print "大きすぎます"
975デフォルトの名無しさん:2009/11/15(日) 22:49:37
975
976デフォルトの名無しさん:2009/11/15(日) 23:27:45
976
977デフォルトの名無しさん:2009/11/16(月) 06:32:29
978デフォルトの名無しさん:2009/11/16(月) 07:31:36
978
979デフォルトの名無しさん:2009/11/16(月) 07:32:34
979
980デフォルトの名無しさん:2009/11/16(月) 09:02:53
980
981デフォルトの名無しさん:2009/11/16(月) 09:05:42
ゼータ関数をgeneratorで出力するプログラムを書いてください
982デフォルトの名無しさん:2009/11/16(月) 09:10:26
982
983デフォルトの名無しさん:2009/11/16(月) 09:35:18
983
984デフォルトの名無しさん:2009/11/16(月) 09:36:21
984
985デフォルトの名無しさん:2009/11/16(月) 09:37:05
985
986デフォルトの名無しさん:2009/11/16(月) 10:34:44
986
987デフォルトの名無しさん:2009/11/16(月) 10:37:30
987
988デフォルトの名無しさん:2009/11/16(月) 10:57:24
988
989デフォルトの名無しさん:2009/11/16(月) 11:06:08
989
990デフォルトの名無しさん:2009/11/16(月) 11:08:27
990
991デフォルトの名無しさん:2009/11/16(月) 11:13:07
992デフォルトの名無しさん:2009/11/16(月) 11:20:57
992
993デフォルトの名無しさん:2009/11/16(月) 13:01:04
991
994デフォルトの名無しさん:2009/11/16(月) 13:01:37
990
995デフォルトの名無しさん:2009/11/16(月) 13:02:03
998
996デフォルトの名無しさん:2009/11/16(月) 13:02:23
999
997デフォルトの名無しさん:2009/11/16(月) 13:02:46
996
998デフォルトの名無しさん:2009/11/16(月) 13:03:07
997
999デフォルトの名無しさん:2009/11/16(月) 13:03:29
1000
1000デフォルトの名無しさん:2009/11/16(月) 13:04:40
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。