インド式計算をPython(似非ワンライナー)で練習 他

[pukiwiki]
*[[GMailにメールを送ると,自動でエアコンをつけたりする:http://sklave.jp/tags/RemoteStation]]
*[[熱血!平成教育学院インド式掛け算(11~19):http://www.fujitv.co.jp/gakuin/47/04.html]]
“(10+x)*(10+y)=(10+x+y)*10+x*y
x,yは1~9

これは(四角形の面積を使った証明が)判りやすい。反復練習しようと思います。
—-
*インド式計算をPythonで練習。
Flashで作ろうかと思ったけど、カコイイGUIを考えるのがめんどくさかったのでPythonで。
[/pukiwiki]

Pythonの対話環境にコピペするだけ。

from random import randint; mondaisuu=3;f=lambda x=None:randint(11,19);L=[(x,y,x*y,int(q),(raw_input("%(x)s * %(y)s = %(a)s your answar= %(q)s %(yn)s" % dict(x=x,y=y,q=q,yn=(int(q)==x*y),a=x*y)))) for x,y,q in ((x,y,(raw_input("%(x)s * %(y)s =? "%vars()))) for x,y in ([f(),f()] for x in xrange(mondaisuu)))];

[pukiwiki]

。。。って、このコードが間違ってたら意味ないけど。(多分合ってると思うけど)
だれかテスト書いてー

最初に書いたコード。これだと一度、ファイルに保存しなきゃいけない。
_import random
_def f() :
_ x=random.randint(11,19)
_ y=random.randint(11,19)
_ a=x*y
_ q=raw_input(“%(x)s * %(y)s =?” % vars())
_ yn=(int(q)==a)
_ print “%(x)s * %(y)s = %(a)s your answar= %(q)s %(yn)s” % vars()
_for i in xrange(5): f()
ださださのコードですが、自分が練習したくなった時用にメモ。

*list.sort()は値を返さない
今日のへっぽこ。リストの重複した要素を削除するためにset(~)にソート済みリストを渡そうとして間違えました。

間違った例
_L=[1,1,2,2,3,3]
_L=list(set(L.sort())).sort()
_#set(list)するまえにソートしたほうが速い気がする。
_#プロファイルしてないけど。

リストのsortメソッドは破壊的なので値を返さないので、これはエラーになる。組み込み関数のsorted(list)使うか
_L.sort() ; L=list(set(L)); L.sort()

これで、Lの中身は 1,2,3。
[/pukiwiki]

コメントを残す

メールアドレスが公開されることはありません。