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

■ このスレッドは過去ログ倉庫に格納されています
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/
223デフォルトの名無しさん
垢版 |
2011/02/09(水) 08:52:40
    「エ」に当てはまるものを、次の0〜5のうちから一つ選べ。
    0. 130 1. 140 2. 150 3. 190 4. 200 5. 210
    「オ」、「カ」、「キ」に当てはまるものを、次の0〜8のうちから一つ選べ。
    0. LET C=1 1. GOTO 130 2. GOTO 140
    3. GOTO 210 4. LET C=C+1 5. LET I=I+1
    6. LET I=I/2 7. NEXT N 8. LET I=2*I+1
    「プログラム」を実行して、Nに24を入力すると、180行は「ク」回実行される。
    (3)Mを10の5乗以下の自然数とする。(2)で作成した「プログラム」を変更して、
    M以下の自然数Nのうち、F(N)<=10となるすべてのNについて、F(N)の値を
    出力するプログラムを作成する。そのために、まず、「プログラム」の100行を
    次の二つの行で置き換える。
    100 INPUT M
    101 FOR N=1 TO M
    さらに、210行を次の二つの行で置き換える。
    210 IF 「ケ」 THEN PRINT "F(";N;")=";C
    211 「コ」
    「ケ」に当てはまるものを、次の0〜5のうちから一つ選べ。
    0. INT(I/2)=I 1. C>10 2. M>=C
    3. N=I 4. C<=10 5. I=N
    「コ」に当てはまるものを、次の0〜5のうちから一つ選べ。
    0. LET M=M+1 1. GOTO 120 2. NEXT M
    3. NEXT N 4. LET C=C+1 5. NEXT I
    変更後のプログラムを実行して、Mに10を入力すると、210行のPRINT文は
    「サ」回実行される。

pythonで解いてみてくだされ
2011/02/10(木) 20:13:39
確認するがプログラムの作成の部分だよな?
2011/02/10(木) 21:58:26
pythonでプログラムを作成してください
ただしループが何回回るかも知りたいです
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

>>223のループ追加するとかそういうのは面倒だから自分でやれ
227デフォルトの名無しさん
垢版 |
2011/02/14(月) 05:56:14
ありがとうございました
228デフォルトの名無しさん
垢版 |
2011/02/14(月) 06:46:36
◆QZaw55cn4c
2011/02/17(木) 02:08:54
project euler problem02
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%202

フィボナッチ数列の項は前の2つの項の和である。最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。

(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
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)

2011/02/17(木) 03:05:51
>>230
答えは257114ですか?
入力したら間違ってるて言われた・・・
2011/02/17(木) 03:14:27
>>231
400 * 10000
2011/02/17(木) 03:17:19
あ、ほんとだ0一個足りないですね。
気付かなかった
2011/02/18(金) 14:42:07
>>189 の 3.
>>200
エディタを作ったのでどうぞ
ttp://www5.puny.jp/uploader/download/1298007172.zip
2011/02/18(金) 14:43:53
↑パス書き忘れた orz
turtle
です
236デフォルトの名無しさん
垢版 |
2011/02/19(土) 23:21:19.92
適当なサイトからリンク先へとどんどんクロールしたいんですがurllibとre.compile()でURL見つけて再帰処理って感じで良いでしょうか?
2011/02/20(日) 07:21:55.93
>>236
真面目に「リンク」を辿りたいならhtmlparserを使うべきだろ。
素のテキストやコメントに書かれたURLを追っかけていっちゃってもいいというやっつけ仕様なら正規表現もアリだが。
2011/02/20(日) 19:51:45.98
ttp://hogehoge とかにも対応したいんで正規表現で逝きます
2011/02/21(月) 18:15:28.88
>>237
ありがとうございました。
htmlparser使うようにします。
2011/02/21(月) 19:08:05.82
壊れたHTML文書に出会いませんように
2011/02/22(火) 02:13:32.37
>>240
会社にそういったプログラムを仕事で書いてる人がいるけど
真面目に頑張るとかなり苦労するよーw
2011/02/22(火) 21:29:41.55
>>241
htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
2011/02/22(火) 21:39:40.08
つlxml.html
2011/02/24(木) 16:49:31.84
Beautiful Soupってどうなの?
2011/02/26(土) 22:27:24.99
なかなかいいよ
246デフォルトの名無しさん
垢版 |
2011/03/01(火) 01:26:57.10
【 課題 】
以下のページにあるPythonのコードを実行してウインドウを表示させよ。
http://www.not-enough.org/abe/manual/program-aa08/pyopengl1.html

【 Ver  】Python2.7.1 OS・・・windows7-64bit、開発環境Eclipse,PyDev
【 補足 】
↓Eclipse上で実行してみると、以下のようなエラーが出たため

Traceback (most recent call last):
File "C:\Users\username\workspace\PyOpenGL\src\PyOpenGL1.py", line 3, in <module>
from OpenGL.GL import *
ImportError: No module named OpenGL.GL


↓PyOpenGLというのをDLしてみました。
http://pyopengl.sourceforge.net/
モジュール?DLしたからには、Pythonのフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
2011/03/01(火) 01:40:52.05
【 課題 】
ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ
それが回文数になるまで同じ操作を繰り返したとき
最も回文数になりにくい 3桁の数を見つけてください

【 Ver  】Python2.x

【 補足 】

回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです
なお 2桁の場合は 89, 98 が最大で 24回だそうです
2011/03/01(火) 17:39:09.29
>>247
しょーがねぇ、俺がとっておきを披露してやろう。
#! /usr/bin/python
open("hello.c", "w").write('''
#include <stdio.h>
int main(void)
{
printf("hello, world.\n");
return 0;
}
''')
os.system('gcc -o hello hello.c')
os.system('./hello')
raise SystemExit
2011/03/01(火) 23:39:48.44
ひどすぎる
2011/03/02(水) 00:30:45.95
>>247
def reversed_num(n):
    x = 0
    while n > 0:
        n, m = divmod(n, 10)
        x = x * 10 + m
    return x

def solve(n):
    i = 0
    nn = n
    rn = reversed_num(nn)
    while True:
        if nn == rn: break
        i += 1
        nn  = nn + rn
        rn = reversed_num(nn)
    print n, i, nn

for n in range(100, 1000):
    solve(n)

馬鹿正直なコードを書いてみたけど、下から試すと196、上から試すと986で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
2011/03/02(水) 01:13:16.28
>>250
def reversed_num(n):
    return int(str(n)[::-1])
にしたら少しは速くなるかもしれないけど、もっと根本的な枝刈りが必要だね。
2011/03/02(水) 02:04:24.48
初心者なのですが勉強で>>247をやってみようと思って、
以下のコードを書いたのですが、タプルを返してるつもりが、
19をはじめ、ところどころNoneで返ってきてしまいます。
returnするまではtupleなのですが、returnするとNoneになるようです。
すみませんが、なぜか教えていただけますでしょうか。

def f(x, count):
    y = int(str(x)[::-1])
    z = x + y
    if z == int(str(z)[::-1]) :
        return (z, count)
    else :
        f(z, count + 1)

if __name__ == '__main__' :
    
    for i in range(10, 99) :
        print type(f(i, 1))
2011/03/02(水) 02:08:52.72
>>252
else: の後をよく見てみよう。
2011/03/02(水) 02:12:23.22
return がなかったです…。ありがとうございます。これで寝られます。
2011/03/04(金) 18:30:06.95
ベストアンサーまだですか?
2011/03/05(土) 21:50:19.02
回文数を先に抜き出して、そこから足し合わせじゃなく引き合わせにすれば速くなるか…な
2011/03/06(日) 18:48:07.22
>>247
「1の位が0」「1と10の位が0」の数についてはどう扱うべきなのかな?
たとえば100をひっくり返すと001だけど。
2011/03/06(日) 19:04:24.47
>>257
001は3桁の数ではなく1桁の数とする。
が普通だろう。
2011/03/06(日) 20:04:42.97
>>258
であれば、ひっくり返した数が100未満ならその時点で除外できなくね?
2011/03/06(日) 20:38:31.99
>>259
そう思う。
261デフォルトの名無しさん
垢版 |
2011/03/07(月) 08:19:40.19
>>222
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E3%81%AE%E5%95%8F%E9%A1%8C
262デフォルトの名無しさん
垢版 |
2011/03/07(月) 08:22:53.77
>>259
101〜999までの間に
ひっくり返したら
3桁じゃなくなる数って
そんなに多くないぞ
2011/03/07(月) 14:06:29.17
196
295
394
493
592
689
691
788
790
879
887
978
986

さぁどれだ
2011/03/07(月) 16:12:10.53
ちょっと何言いいたいのか分からないっすね
2011/03/08(火) 02:39:40.59
ある程度長いのが絞られてきたみたいですね
2011/03/08(火) 03:04:11.21
ある3桁の数(単数か複数かは不明)が回文数にならないことを証明することは出来ていないんだろうか?
2011/03/08(火) 09:16:55.89
回文数にならないものってどうやって見つけんのよ
2011/04/25(月) 20:07:16.29
1000回まで計算した。計算しきれなかったのは>>263と同じ。
それらがすべて、永遠に回文数にならないので解ではないなら、
23回 187 286 385 583 682 781 880
が解。特徴的。この数字はどれも、1回の操作で968になる。

>>263を、この特徴に合わせて分けると
a) 196 295 394 493 592 691 790
b) 689 788 887 986
c) 879 978
このうち、少なくともbは解じゃない。aを1回操作すると788になるから、aの方がbより1回多い。

……ここまでしか分からんかった。
269268
垢版 |
2011/04/25(月) 20:08:36.16
誤 aを1回操作すると788になるから
正 aを1回操作すると887になるから
2011/04/26(火) 01:30:26.68
http://en.wikipedia.org/wiki/Lychrel_number
でぐぐったら、結構出てくるなぁ。
2011/04/27(水) 17:55:15.88
>>267
少なくとも判定は出来ると思う
3桁の数なら
「回文数になる」
「回文数になる前に(おおざっぱに)1000個の数字がすべて出てくる」
「1000個出てこなくてもどこかで同じ数字が出てきて循環する」
のどれかになるんじゃないかな
2011/04/27(水) 19:16:53.31
>>271
余りをとったり、しないんだよね。
そしたら、足すたびに数字は増えるので循環とか数字全部出るとかはありえないよ。
2011/04/27(水) 20:12:16.88
>>372
うは
ごめん
素で勘違いしてたわ
2011/04/28(木) 01:13:33.28
ロングパス入りました。
2011/04/28(木) 01:21:22.71
>>372
世の中には、勘違いしてても気づかない奴もいるって事よ。
2011/04/29(金) 20:53:12.21
ゴールドバッハの予想
与えられた値を2つの素数の和で現してください
verは出来れば2.6で
エラトステネスのふるいを用いた素数リストを使って値を出すようにしてください
お願いします
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
2011/04/30(土) 06:55:17.50
>>277
ありがとうございます
279デフォルトの名無しさん
垢版 |
2011/06/02(木) 06:22:08.84
日本の大学とかでPythonの宿題がでる(Python使って教えている)ところって多いの?
2011/06/02(木) 17:55:17.03
The university of second channel
281デフォルトの名無しさん
垢版 |
2011/06/14(火) 19:57:57.72
カーニハンの『プログラミング作法』の3章に出てくる、マルコフ連鎖の
Perl版の奴をPythonに移植したいんのですが、データ構造をどう実装すれば
いいのかよくわかりません。

英文を読み込んで、単語1、単語2という組み合わせを読み込み、その後に
付く単語をsuffixとして記憶する(複数の場合にはチェインする)というもの
です。
読み込み部分のソースはこんな感じです。

>$NONWORD = "\n";
>$w1 = $w2 = $NONWORD; #initial state
>while (<>) { # read each line of input
> foreach (split) {
> push(@{$statetab{$w1}{$w2}}, $_);
> ($w1, $w2) = ($w2, $_); #multiple assignment
> }
>}
push(@{$statetab{$w1}{$w2}}, $NONWORD); # add tail

たとえばRubyに移植するとこんな感じになると思います。
>statetab = Hash.new{|h,k| h[k] = Hash.new{|h2,k2| h2[k2]= []}}
中略
> statetab[w1][w2].push(word)
Pythonでもこういうハッシュ+リストみたいなのを実現するにはどうやれば
いいでしょうか?
2011/06/14(火) 20:37:04.18
>>281
In [1]: from collections import defaultdict
In [2]: d = defaultdict(lambda: defaultdict(list))
In [3]: d['w']['x'].append('z')
In [4]: d
Out[4]: defaultdict(<function <lambda> at 0x12c7488>, {'w': defaultdict(<type 'list'>, {'x': ['z']})})

statetab[(w1, w2)] みたいに、1階層で単語のタプルをキーにすることもできるね。
2011/06/14(火) 21:16:40.59
>>282
サンクス。
そっかタプルってキーにできるんですね。それがわかり易そうだなあ。
lambdaはよくわからないので・・・。
2011/08/01(月) 21:52:27.42
テキストファイル、複数キー、ソートで検索したところ、下記のソースを見つけました。
しかし、lines.sort(cmp=lambda 〜 の 行の意味が解かりません。
lambda式がcmpに代入されている意味。
後半に出てくるcmpと先頭のcmpは、同じcmp関数?
コラム指定された部分がx,yに代入されて比較されている、と思うのですが、
これをsortに渡すとファイル全体がソートされる動作が想像できません。
解説をお願いいたします。

# filesort.py
# coding:shift_jis
# ファイルのSORT
import string
import time
from datetime import datetime
startTime = time.clock()
print datetime.today().strftime("%Y年%m月%d日 %H時%M時%S秒 処理開始")
fr = open("C:/in.txt", "r") # 入力ファイル
fw = open("C:/out.txt", "w") # 出力ファイル
lines = fr.readlines()
cnt = len(lines)
# SORT ソート位置を変更するときは下記行を修正。
# ソートキーは複数指定していて、11カラムから5桁と1カラムから9桁です。
lines.sort(cmp=lambda x,y: cmp(str(x)[10:15]+str(x)[0:9], str(y)[10:15]+str(y)[0:9]))
fw.writelines(lines)
fr.close()
fw.close()
# 終了メッセージ
print datetime.today().strftime("%Y年%m月%d日 %H時%M時%S秒 処理終了")
print cnt, '件を', time.clock() - startTime, '秒で処理しました。'
print '何かキーを押せば終了します。'
raw_input()
2011/08/01(月) 22:01:30.90
>しかし、lines.sort(cmp=lambda 〜 の 行の意味が解かりません。

名前付き引数
2011/08/03(水) 18:11:59.06
285です。
先のcmpはsort()の名前付き引数、後のcmpはcmp関数、という事は解かりました。
ですが、やはり、ファイル全体がソートされる動作が想像できません。
2011/08/03(水) 18:13:27.10
286 です。 >285です。 は、284の間違いでした。
2011/08/03(水) 19:31:32.77
了解
2011/08/03(水) 21:03:18.52
>>286
sort()の中でリストの要素同士の大小比較をするときに、cmp引数で指定された比較関数を呼び出して
比較しているから、cmp引数でソートの挙動をカスタマイズできるんだよ。
文字列全体じゃなくて一部分だけを比較のキーにする、みたいに。
ちなみにcmp引数に何も指定しないと、要素そのものをキーとして組み込み関数のcmp関数を呼ぶ。
290289
垢版 |
2011/08/03(水) 21:07:06.99
補足しておくと、昔はともかく今のPythonでこんなげろんちょな比較関数を書く必要は無い。
sort()にkey引数ってのが導入されて、リストの要素からソートキーを得る関数を指定できる。
もちろん、指摘しなければリストの要素がそのままソートキーになるんだけど。

つまり>>286と全く同じことを
lines.sort(key = lambda x: x[10:15] + x[0:9])
と書ける。
291286
垢版 |
2011/08/04(木) 17:36:23.52
>>289
>>290
ありがとうございます。
>lines.sort(key = lambda x: x[10:15] + x[0:9])
こちらはソートのキー指定をしている事が、直感的に納得できました。こちらを使います。
292デフォルトの名無しさん
垢版 |
2011/10/04(火) 08:58:36.28
 ̄( ̄( ̄(A ∩ B) ∩ A) ∩  ̄( ̄(A ∩ B) ∩ B))
293デフォルトの名無しさん
垢版 |
2011/11/03(木) 17:32:29.90
宿題誰か作って下さい><お願いします!

C:\Users\workspace\pythonというディレクトリの中に
下の画像のように、pythonファイルとテキストファイルが存在するとします。
@http://up3.viploader.net/ippan/src/vlippan243126.jpg(Python実行前)
【それぞれのテキストファイルの中には、変数にpathを代入するような記述が書いてあります
必ずしも、1行目と2行目にpath1,path2の変数があるとは限りません。】
Ahttp://viploader.net/ippan/src/vlippan243130.jpg(Python実行後)
pythonファイルを実行すると、
pythonがあるディレクトリと同ディレクトリの全てのテキスト形式ファイル(test1.test2,test3,test4)内にある
path1、path2に格納されている文字列を画像Aのように置き換えたいです。
2011/11/03(木) 19:13:43.01
for i in range(1, 5):
    with open('test{}.txt'.format(i), 'r+') as fp:
        d = fp.read().replace(r'C:\aaa\aaa\aaa\aaa', r'C:\Users\workspace\python').replace(r'C:\iii\iii\iii\iii', r'C:\Users\workspace')
        fp.seek(0, 0)
        fp.truncate()
        fp.write(d)
2011/11/04(金) 10:29:57.94
↑汎用性のないしょぼいプログラム書いてんじゃねえよ死ね!
2011/11/04(金) 10:58:40.79
宿題の題意には特記事項としての汎用性は求められていませんでしたが
2011/11/04(金) 12:17:32.01
汎用性のあるコードを>>295が書けば解決
2011/11/04(金) 12:48:15.42
情報が足りな過ぎる
何がしたいのか判らん
2011/11/17(木) 23:36:18.41
1から10までの整数の順列をすべて表示するプログラムをお願いします。
300299
垢版 |
2011/11/17(木) 23:40:57.76
299です。[1,2,3,4,5..,10]みたいな感じのリストになるようにお願いします。
2011/11/17(木) 23:44:37.82
print [1,2,3,4,5,6,7,8,9,10]
2011/11/17(木) 23:59:11.85
何も考えずにlist(itertools.permutations(range(1, 11)))とかしたら危うく
2011/11/18(金) 00:09:05.17
10!
304299
垢版 |
2011/11/18(金) 00:14:14.86
a = [[0]]
r = 1
while r < 11:
cl = []
for x in range(len(a)):
for y in range(len(a[0])):
a[x][y] = a[x][y] + 1

for x in range(len(a)):
for y in range(len(a[0])+1):
cl.append(a[x][0:y] + [0] + a[x][y:len(a)])

初めて書いたコードが動いただけで満足してたんですが2行で済んでしまうとは驚きです。また勉強します。ありがとうございます
2011/11/18(金) 06:42:14.78
馬鹿には無理
2011/11/18(金) 23:51:58.32
馬鹿には向いてないぞ
2011/11/19(土) 10:46:00.70
http://scan.netsecurity.ne.jp/article/img/2011/11/13/27625/93.html
tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけどWEB業界で有名らしいね
動画ありませんか?
2012/04/07(土) 10:43:20.79
・1から2000までの数字が昇順に格納された
要素2000個の配列を用意
・乱数にて1から2000までのキー値を生成し、
上記配列を二分探索で探索してキー値を見つけるまでの
探索回数を記録
・以上を1000回繰り返し、平均探索回数を算出
・上記の平均探索回数を、理論値log2・2000と比較して示せ

という宿題を出されたのですが、まるでわかりません。
よろしくお願いします。
2012/04/07(土) 15:28:54.07
二分探索なんかしなくても
すぐ見つかるんじゃね?
2012/04/07(土) 23:23:05.10
>>308
サクっと書けるから回答はすぐもらえるだろうけど、
Python関係なく用語自体わかってないなら
学校はじまる前に調べるなり・聞いたりしないとヤバイよ。
311308
垢版 |
2012/04/08(日) 01:03:06.69
自力で(というか、入門書とWEBを漁りまくって)
12時間かけて何とかできました。疲れた…
要素数と試行回数を指定できるように作ったので
よければ遊んでみてください。

http://codepad.org/RaKvygkr
312営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/08(日) 11:12:00.89
いやです
2012/04/15(日) 23:15:02.68
>>311
The resource could not be found.
314308
垢版 |
2012/04/16(月) 00:23:02.09
あやー
見てくれる人いたんですか。
あれからちょこちょこいじっているので
URL変わっちゃってます。

http://codepad.org/oX8W6350

しかし、こうして探索している様子がわかると面白いですね。
こんな半分ずつ探索範囲を狭めていくやり方で
漏れなく見つかるんだって感動する。
315デフォルトの名無しさん
垢版 |
2012/05/22(火) 17:40:11.37
import sys
import random
import string
import ctypes

if __name__ == '__main__':
  class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure):
    _fields_ = [
      ('w', ctypes.c_short), ('h', ctypes.c_short),
      ('x', ctypes.c_short), ('y', ctypes.c_short),
      ('a', ctypes.c_int),
      ('l', ctypes.c_short), ('t', ctypes.c_short),
      ('r', ctypes.c_short), ('b', ctypes.c_short),
      ('maxw', ctypes.c_short), ('maxh', ctypes.c_short)]
  h = ctypes.windll.kernel32.GetStdHandle(-11)
  b = CONSOLE_SCREEN_BUFFER_INFO()
  ctypes.windll.kernel32.GetConsoleScreenBufferInfo(h, ctypes.byref(b))
  ctypes.windll.kernel32.SetConsoleTextAttribute(h, 10)
  chrs = string.ascii_letters + string.digits + string.punctuation
  chrs += ' ' * len(chrs)
  sz = len(chrs)
  try:
    while True: sys.stdout.write(chrs[random.randint(0, sz - 1)])
  finally:
    ctypes.windll.kernel32.SetConsoleTextAttribute(h, b.a)
2012/05/22(火) 22:56:27.95
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
2012/05/22(火) 23:07:06.98
if __name__いらねえだろ
318uy
垢版 |
2012/05/23(水) 12:04:58.26
range(1, 5)

これがPythonはダメだよな
2012/05/23(水) 14:05:49.87
xrangeの話?区間の話?
2012/05/25(金) 03:15:13.85
>>317
学校で先生が付けろって言ってたので
2012/05/25(金) 13:10:11.20
if __main__ にロジックを大量に書くとデバッグしにくくなるからやめなさい。
代わりに何か適当な関数を作って、ロジックはその中に置く。
if __main__ にはその関数への呼び出しを書いておけばいい。
http://www.artima.com/weblogs/viewpost.jsp?thread=4829
2012/05/25(金) 13:21:42.92
import sys
import random
import string
import ctypes

class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure):
  _fields_ = [
    ('w', ctypes.c_short), ('h', ctypes.c_short),
    ('x', ctypes.c_short), ('y', ctypes.c_short),
    ('a', ctypes.c_int),
    ('l', ctypes.c_short), ('t', ctypes.c_short),
    ('r', ctypes.c_short), ('b', ctypes.c_short),
    ('maxw', ctypes.c_short), ('maxh', ctypes.c_short)]

def main():
  h = ctypes.windll.kernel32.GetStdHandle(-11)
  b = CONSOLE_SCREEN_BUFFER_INFO()
  ctypes.windll.kernel32.GetConsoleScreenBufferInfo(h, ctypes.byref(b))
  ctypes.windll.kernel32.SetConsoleTextAttribute(h, 10)
  chrs = string.ascii_letters + string.digits + string.punctuation
  chrs += ' ' * len(chrs)
  sz = len(chrs)
  try:
    while True: sys.stdout.write(chrs[random.randint(0, sz - 1)])
  finally:
    ctypes.windll.kernel32.SetConsoleTextAttribute(h, b.a)

if __name__ == '__main__':
  main()
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況