【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
201見習い
2011/01/24(月) 15:47:12 占い文を fortune.dat から取り出すようにしなさい。
(q1.py という名前で作成)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
fortune = {
'いちご': '幸運が訪れます',
'みかん': '努力が必要です',
'りんご': '我慢が必要です'
}
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
ヒント
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
#fortune.datからディクショナリを読み込むようにここに数行追加。
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
(q1.py という名前で作成)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
fortune = {
'いちご': '幸運が訪れます',
'みかん': '努力が必要です',
'りんご': '我慢が必要です'
}
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
ヒント
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
#fortune.datからディクショナリを読み込むようにここに数行追加。
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
202デフォルトの名無しさん
2011/01/24(月) 17:55:12 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
with open("fortune.dat", "r") as f: fortune = eval(f.read())# からディクショナリを読み込むようにここに数行追加。
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
# -*- coding: utf-8 -*-
# a.py
# いちご占い
print '*** いちご占い ***'
with open("fortune.dat", "r") as f: fortune = eval(f.read())# からディクショナリを読み込むようにここに数行追加。
ans = raw_input('好きなフルーツの名前をどうぞ: ')
if fortune.has_key(ans):
print '%sの好きなあなたには%s.' % (ans, fortune[ans])
else: print '%sの好きなあなたは健康に気をつけてください.' % an
203まるっきりの初心者。
2011/01/24(月) 20:44:42 import osg,osgDB,osgViewer,osgGA
import sys,math,random,time
#function for move
def moveX( dx ):
global cbx,current,colorpat
if current < 0: return
if(cbx == 9 and dx == 1) or (cbx == 0 and dx == -1 ):return
cbx = cbx + dx
position = colorpat[current].getPosition()
pos = osg.Vec3d(cbx,position.y(),position.z())
colorpat[current].setPosition( pos )
def moveY( dy ):
global cby,current,colorpat
if current < 0: return
if(cby == 9 and dy == 1) or (cby == 0 and dy == -1 ):return
cby = cby + dy
position = colorpat[current].getPosition()
pos = osg.Vec3d(position.x(),cby,position.z())
colorpat[current].setPosition( pos )
def speedFall():
for i in range(3):
if(fallBox() == False):
createNewBox(root)
break
import sys,math,random,time
#function for move
def moveX( dx ):
global cbx,current,colorpat
if current < 0: return
if(cbx == 9 and dx == 1) or (cbx == 0 and dx == -1 ):return
cbx = cbx + dx
position = colorpat[current].getPosition()
pos = osg.Vec3d(cbx,position.y(),position.z())
colorpat[current].setPosition( pos )
def moveY( dy ):
global cby,current,colorpat
if current < 0: return
if(cby == 9 and dy == 1) or (cby == 0 and dy == -1 ):return
cby = cby + dy
position = colorpat[current].getPosition()
pos = osg.Vec3d(position.x(),cby,position.z())
colorpat[current].setPosition( pos )
def speedFall():
for i in range(3):
if(fallBox() == False):
createNewBox(root)
break
204まるっきりの初心者。
2011/01/24(月) 20:46:23 # keyboard handler
class KeyboardHandler(osgGA.GUIEventHandler):
def __init__(self):
osgGA.GUIEventHandler.__init__(self)
def handle(self,ea,aa,obj,nv):
vwr = osgViewer.GUIActionAdapterToViewer(aa)
if not vwr:return False
eventtype = ea.getEventType()
if eventtype == ea.KEYDOWN:
if ea.getKey() == ea.KEY_Right:
moveX( 1 )
return True
elif ea.getKey() == ea.KEY_Left:
moveX( -1 )
return True
elif ea.getKey() == ea.KEY_Up:
moveY( 1 )
return True
elif ea.getKey() == ea.KEY_Down:
moveY( -1 )
return True
elif ea.getKey() == ea.KEY_Space:
speedFall()
return True
return False
class KeyboardHandler(osgGA.GUIEventHandler):
def __init__(self):
osgGA.GUIEventHandler.__init__(self)
def handle(self,ea,aa,obj,nv):
vwr = osgViewer.GUIActionAdapterToViewer(aa)
if not vwr:return False
eventtype = ea.getEventType()
if eventtype == ea.KEYDOWN:
if ea.getKey() == ea.KEY_Right:
moveX( 1 )
return True
elif ea.getKey() == ea.KEY_Left:
moveX( -1 )
return True
elif ea.getKey() == ea.KEY_Up:
moveY( 1 )
return True
elif ea.getKey() == ea.KEY_Down:
moveY( -1 )
return True
elif ea.getKey() == ea.KEY_Space:
speedFall()
return True
return False
205まるっきりの初心者。
2011/01/24(月) 20:47:09 #create frame
def createFrame( root ):
for i in range( 8 ):
if(i % 2 == 0): x,bx = 5,10
elif((i-1)%4==0): x,bx = -0.25,0.5
else: x,bx =10.25,0.5
if(i%2 == 1):y,by = 5,10
elif(i%4 == 0):y,by = -0.25,0.5
else:y,by = 10.25,0.5
if(i<4):z,bz = 0,0.5
else:z,bz = 20,0.5
box = osg.Box(osg.Vec3(x,y,z),bx,by,bz)
bb = osg.ShapeDrawable( box )
bb.setColor(osg.Vec4(0.5,0.5,0.5,0.1))
gg = osg.Geode()
gg.addDrawable( bb )
root.addChild( gg )
cbx = -1
cby = -1
cbz = -1
stack = [[]]
for x in range(10):
stack.append([])
for y in range(10):
stack[x].append(0)
def createFrame( root ):
for i in range( 8 ):
if(i % 2 == 0): x,bx = 5,10
elif((i-1)%4==0): x,bx = -0.25,0.5
else: x,bx =10.25,0.5
if(i%2 == 1):y,by = 5,10
elif(i%4 == 0):y,by = -0.25,0.5
else:y,by = 10.25,0.5
if(i<4):z,bz = 0,0.5
else:z,bz = 20,0.5
box = osg.Box(osg.Vec3(x,y,z),bx,by,bz)
bb = osg.ShapeDrawable( box )
bb.setColor(osg.Vec4(0.5,0.5,0.5,0.1))
gg = osg.Geode()
gg.addDrawable( bb )
root.addChild( gg )
cbx = -1
cby = -1
cbz = -1
stack = [[]]
for x in range(10):
stack.append([])
for y in range(10):
stack[x].append(0)
206まるっきりの初心者。
2011/01/24(月) 20:47:49 #shifting the plane if the plane is satisfied
def shiftingPlane():
global current,stack
satisfied = True
for i in range(100):
if( satisfied and stack[i / 10][i % 10]< 1 ):
satisfied = False
break
if ( satisfied ):
for x in range(10):
for y in range(10):
stack[x][y] = stack[x][y]-1
for i in range( current ):
position = colorpat[i].getPosition()
z = position.z()-1
pos = osg.Vec3d(position.x(),position.y(), z)
colorpat[i].setPosition( pos )
def shiftingPlane():
global current,stack
satisfied = True
for i in range(100):
if( satisfied and stack[i / 10][i % 10]< 1 ):
satisfied = False
break
if ( satisfied ):
for x in range(10):
for y in range(10):
stack[x][y] = stack[x][y]-1
for i in range( current ):
position = colorpat[i].getPosition()
z = position.z()-1
pos = osg.Vec3d(position.x(),position.y(), z)
colorpat[i].setPosition( pos )
207見習い
2011/01/29(土) 13:26:55 3. 下記の手順に従ってsin(x)/x=0.90の近似解xを求めるスクリプトを作成しなさい。なお、sin(1.)/1.≒0.85で、ここからxの減少に伴ってsin(x)/xの値が単調増加することはわかっているものとします。スクリプトの名前はkinji.pyとしてください。
(1) xを1.とする。
(2)次の過程を無限ループで繰り返す 。
(2.1)sin(x)/xを計算してyに代入する。
(2.2)xとy(sin(x)/x)の値を表示する。
(2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
(2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は***です”というメッセージを示して、プログラムを終了する。
実行例
./kinji.py
sin(x)/x=0.9の近似解を求めます
x=0.99 sin(x)/x=0.844470685455
x=0.98 sin(x)/x= 0.84744629642
中略 .......
x=*** sin(x)/x=**************
近似解が見つかりました。解は***です。
(ヒント:ループから抜けるbreak)
(1) xを1.とする。
(2)次の過程を無限ループで繰り返す 。
(2.1)sin(x)/xを計算してyに代入する。
(2.2)xとy(sin(x)/x)の値を表示する。
(2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
(2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は***です”というメッセージを示して、プログラムを終了する。
実行例
./kinji.py
sin(x)/x=0.9の近似解を求めます
x=0.99 sin(x)/x=0.844470685455
x=0.98 sin(x)/x= 0.84744629642
中略 .......
x=*** sin(x)/x=**************
近似解が見つかりました。解は***です。
(ヒント:ループから抜けるbreak)
208デフォルトの名無しさん
2011/01/29(土) 14:44:52 >>207
手続き型言語なんだから、手続きが書いてある場合は、書いてある通りにとりあえず書いてみろ。
import sys
import math
# (1) xを1.とする。
x = 1.
# (2)次の過程を無限ループで繰り返す 。
while True:
# (2.1)sin(x)/xを計算してyに代入する。
y = math.sin(x)/x
# (2.2)xとy(sin(x)/x)の値を表示する。
print x, y
# (2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
if y <= 0.90:
x -= 0.01
continue
# (2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は***です”というメッセージを示して、プログラムを終了する。
if y >= 0.90:
print "近似解がみつかりました。解は%fです" % x
sys.exit()
さて。書き方が不自然になったが、あえて、問題文の通りの手順でやってみた。
もしbreakを使わないといけないのだったら、使うように自分で改造してくれ。
手続き型言語なんだから、手続きが書いてある場合は、書いてある通りにとりあえず書いてみろ。
import sys
import math
# (1) xを1.とする。
x = 1.
# (2)次の過程を無限ループで繰り返す 。
while True:
# (2.1)sin(x)/xを計算してyに代入する。
y = math.sin(x)/x
# (2.2)xとy(sin(x)/x)の値を表示する。
print x, y
# (2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
if y <= 0.90:
x -= 0.01
continue
# (2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は***です”というメッセージを示して、プログラムを終了する。
if y >= 0.90:
print "近似解がみつかりました。解は%fです" % x
sys.exit()
さて。書き方が不自然になったが、あえて、問題文の通りの手順でやってみた。
もしbreakを使わないといけないのだったら、使うように自分で改造してくれ。
209見習い
2011/01/29(土) 15:30:57 1.半径rの円の面積の値を戻す関数carea(r)を,モジュールq1.pyに作成しなさい。また,インタラクティブモードで正しく動作することを確認しなさい。解答には,q1.pyの中身と実行結果を含めてください。
実行例 (python interactive mode)
>>> imort q1
>>> q1.carea(3)
28.274333882308138
2.r! (1x2x.......r) を計算してその値を戻す関数kaijo(r)をモジュール q2.pyに作成して、インタラクティブモードで正しく動作することを確認しなさい。解答には,q2.pyの中身と実行結果を含めてください。
実行例 (python interactive mode)
>>> imort q2
>>> q2.kaijo(4)
>>>24
3. 2で作成したkaijo(r)を利用して,nCr(注1)を計算する"スクリプト"cmb.pyを作成しなさい。nとrは下記のように、スクリプトの引数で指定するようにしてください。
また, r>nが入力された場合には下記のようなエラーメッセージが出るようにしてください。
入力値が不正です.
用法: cmp.py n r(nCr、n>=r)”
解答には,cmb.pyの中身と実行結果を含めてください。
実行例
% chmod +x cmp.py
% ./cmp.py 6 2
6C2=15
% ./cmp.py 4 5
入力値が不正です.
用法: cmp.py n r(nCr、n>=r) ヒント:nCr=n!/(r!・(n-r)!)
実行例 (python interactive mode)
>>> imort q1
>>> q1.carea(3)
28.274333882308138
2.r! (1x2x.......r) を計算してその値を戻す関数kaijo(r)をモジュール q2.pyに作成して、インタラクティブモードで正しく動作することを確認しなさい。解答には,q2.pyの中身と実行結果を含めてください。
実行例 (python interactive mode)
>>> imort q2
>>> q2.kaijo(4)
>>>24
3. 2で作成したkaijo(r)を利用して,nCr(注1)を計算する"スクリプト"cmb.pyを作成しなさい。nとrは下記のように、スクリプトの引数で指定するようにしてください。
また, r>nが入力された場合には下記のようなエラーメッセージが出るようにしてください。
入力値が不正です.
用法: cmp.py n r(nCr、n>=r)”
解答には,cmb.pyの中身と実行結果を含めてください。
実行例
% chmod +x cmp.py
% ./cmp.py 6 2
6C2=15
% ./cmp.py 4 5
入力値が不正です.
用法: cmp.py n r(nCr、n>=r) ヒント:nCr=n!/(r!・(n-r)!)
210デフォルトの名無しさん
2011/01/29(土) 20:56:23 またおまえかよ
211デフォルトの名無しさん
2011/01/29(土) 21:08:49 >>209
1.
carea = lambda r: __import__('math').pi * r ** 2
2.
kaijo = lambda r: (lambda f, n: f(f, n))((lambda f, n: n * f(f, n-1) if n > 0 else 1), r)
3.
import sys
import q2
print (lambda n, r: '入力値が不正です.' if n < r else q2.kaijo(n)/q2.kaijo(r))(*sys.argv[1:3])
1.
carea = lambda r: __import__('math').pi * r ** 2
2.
kaijo = lambda r: (lambda f, n: f(f, n))((lambda f, n: n * f(f, n-1) if n > 0 else 1), r)
3.
import sys
import q2
print (lambda n, r: '入力値が不正です.' if n < r else q2.kaijo(n)/q2.kaijo(r))(*sys.argv[1:3])
212デフォルトの名無しさん
2011/01/29(土) 21:31:24 問題読んでる途中で寝てしまった orz
213デフォルトの名無しさん
2011/01/30(日) 05:01:33 【 課題 】
コマンドラインで指定したディレクトリ(例: c:\test)について、
各サブディレクトリ毎のファイル数、ファイルサイズ(バイト単位)等を
下記(例)の様な書式でレポート出力するプログラム(s31.py)を作成する。
出力内容は次の通り。
dir はサブディレクトリ名 (ネストに対応すると得点up。その場合の書式拡張は各自考察せよ。)
files はファイル数 (ディレクトリは数えない)
dirsize は上記ファイル数のファイルサイズの合計
maxsize は上記ファイル数の中で最大のファイルのサイズ (ファイル名を行末に表記しても良い。)
ave は dirsize / files を小数点第1位まで表示
※出力例は等幅フォントです。
【 期限 】2011/01/31 15:00 まで
【 Ver 】Windows XP, Vista, 7 / Python 2.5
【 補足 】丸投げです。おながいします。
(例)
C:\Documents and Settings\Administrator>s31.py c:\test
dir: files dirsize maxsize ave
-: 1 287581 287581 287581.0
0: 33 2010948 231763 60937.8
1: 1683 376414953 1410886 223657.1
...
(略)
...
y: 3 233678 95453 77892.7
z: 12 1259272 236288 104939.3
total = 11336
コマンドラインで指定したディレクトリ(例: c:\test)について、
各サブディレクトリ毎のファイル数、ファイルサイズ(バイト単位)等を
下記(例)の様な書式でレポート出力するプログラム(s31.py)を作成する。
出力内容は次の通り。
dir はサブディレクトリ名 (ネストに対応すると得点up。その場合の書式拡張は各自考察せよ。)
files はファイル数 (ディレクトリは数えない)
dirsize は上記ファイル数のファイルサイズの合計
maxsize は上記ファイル数の中で最大のファイルのサイズ (ファイル名を行末に表記しても良い。)
ave は dirsize / files を小数点第1位まで表示
※出力例は等幅フォントです。
【 期限 】2011/01/31 15:00 まで
【 Ver 】Windows XP, Vista, 7 / Python 2.5
【 補足 】丸投げです。おながいします。
(例)
C:\Documents and Settings\Administrator>s31.py c:\test
dir: files dirsize maxsize ave
-: 1 287581 287581 287581.0
0: 33 2010948 231763 60937.8
1: 1683 376414953 1410886 223657.1
...
(略)
...
y: 3 233678 95453 77892.7
z: 12 1259272 236288 104939.3
total = 11336
214213
2011/01/30(日) 05:05:41 ageます。
出力例がずれているのですが、
html ソースを見ると空白が入っているので
恐れ入りますが空白数はそちらを参照してください。
出力例がずれているのですが、
html ソースを見ると空白が入っているので
恐れ入りますが空白数はそちらを参照してください。
215デフォルトの名無しさん
2011/01/30(日) 05:21:43 c:\test直下のファイルとサイズは数えなくていいのか?
ディレクトリ階層全体のサイズも気にしなくていいのか?
それからtotalって何の合計?
ディレクトリ階層全体のサイズも気にしなくていいのか?
それからtotalって何の合計?
216デフォルトの名無しさん
2011/02/03(木) 23:33:36 次のスレッドタイトルは「Python の宿題ここで答えます 3匹目」にしようや。
Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
Partだとつまんない、とRubyの宿題スレが「xx限目」ってなってるのを見て思った。
217デフォルトの名無しさん
2011/02/03(木) 23:51:47 3缶目だとjk
218デフォルトの名無しさん
2011/02/04(金) 01:13:28 角電池3本目
219デフォルトの名無しさん
2011/02/06(日) 01:35:45 我々の武器は3つ
220デフォルトの名無しさん
2011/02/06(日) 04:07:47 単3
221デフォルトの名無しさん
2011/02/09(水) 03:08:02 目指してる 未来が違うwwww byシャープ
http://twitter.com/MASA_37/status/8040170771185664
http://twitter.com/MASA_37/status/8040170771185664
222デフォルトの名無しさん
2011/02/09(水) 08:51:54 2011年数学IIB第6問
nを2以上の自然数とし、以下の操作を考える。
(i)nが偶数ならば、nを2で割る。
(ii)nが奇数ならば、nを3倍して1を加える。
与えられた2以上の自然数にこの操作を行い、得られた自然数が1でなければ、
得られた自然数にこの操作を繰り返す。2以上10の5乗以下の自然数から始めると、
この操作を何回か繰り返すことで必ず1が得られることが確かめられている。
たとえば、10から始めると
10→5→16→8→4→2→1
である。ただし、a→bは1回の操作で自然数aから自然数bが得られたことを意味する。
Nを2以上10の5乗以下の自然数とするとき、F(N)をNから始めて1が得られるまでの
上記の操作の回数と定義する。また、F(1)=0とおく。たとえば、上の例から、
F(10)=6である。
(1)F(6)=「ア」、F(11)=「イウ」である。
(2)10の5乗以下の自然数Nについて、F(N)を求めるため、次のような「プログラム」を作った。
ただし、INT(X)はXを超えない最大の整数を表す関数である。
「プログラム」
100 INPUT N
110 LET I=N
120 LET C=0
130 IF I=1 THEN GOTO 「エ」
140 IF INT(I/2)*2=I THEN
150 「オ」
160 GOTO 190
170 END IF
180 LET I=3*I+1
190 「カ」
200 「キ」
210 PRINT "F(";N;")=";C
220 END
nを2以上の自然数とし、以下の操作を考える。
(i)nが偶数ならば、nを2で割る。
(ii)nが奇数ならば、nを3倍して1を加える。
与えられた2以上の自然数にこの操作を行い、得られた自然数が1でなければ、
得られた自然数にこの操作を繰り返す。2以上10の5乗以下の自然数から始めると、
この操作を何回か繰り返すことで必ず1が得られることが確かめられている。
たとえば、10から始めると
10→5→16→8→4→2→1
である。ただし、a→bは1回の操作で自然数aから自然数bが得られたことを意味する。
Nを2以上10の5乗以下の自然数とするとき、F(N)をNから始めて1が得られるまでの
上記の操作の回数と定義する。また、F(1)=0とおく。たとえば、上の例から、
F(10)=6である。
(1)F(6)=「ア」、F(11)=「イウ」である。
(2)10の5乗以下の自然数Nについて、F(N)を求めるため、次のような「プログラム」を作った。
ただし、INT(X)はXを超えない最大の整数を表す関数である。
「プログラム」
100 INPUT N
110 LET I=N
120 LET C=0
130 IF I=1 THEN GOTO 「エ」
140 IF INT(I/2)*2=I THEN
150 「オ」
160 GOTO 190
170 END IF
180 LET I=3*I+1
190 「カ」
200 「キ」
210 PRINT "F(";N;")=";C
220 END
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で解いてみてくだされ
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で解いてみてくだされ
224デフォルトの名無しさん
2011/02/10(木) 20:13:39 確認するがプログラムの作成の部分だよな?
225デフォルトの名無しさん
2011/02/10(木) 21:58:26 pythonでプログラムを作成してください
ただしループが何回回るかも知りたいです
ただしループが何回回るかも知りたいです
226デフォルトの名無しさん
2011/02/13(日) 15:50:27227デフォルトの名無しさん
2011/02/14(月) 05:56:14 ありがとうございました
228デフォルトの名無しさん
2011/02/14(月) 06:46:36 ◆QZaw55cn4c
229デフォルトの名無しさん
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万を超えない範囲で、偶数の項の総和を求めよ。
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
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万を超えない範囲で、偶数の項の総和を求めよ。
(´・ω・`)再帰で書いたら深度が深すぎて怒られました。だれか教えてください。
230デフォルトの名無しさん
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)
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)
231デフォルトの名無しさん
2011/02/17(木) 03:05:51232デフォルトの名無しさん
2011/02/17(木) 03:14:27 >>231
400 * 10000
400 * 10000
233デフォルトの名無しさん
2011/02/17(木) 03:17:19 あ、ほんとだ0一個足りないですね。
気付かなかった
気付かなかった
234デフォルトの名無しさん
2011/02/18(金) 14:42:07235デフォルトの名無しさん
2011/02/18(金) 14:43:53 ↑パス書き忘れた orz
turtle
です
turtle
です
236デフォルトの名無しさん
2011/02/19(土) 23:21:19.92 適当なサイトからリンク先へとどんどんクロールしたいんですがurllibとre.compile()でURL見つけて再帰処理って感じで良いでしょうか?
237デフォルトの名無しさん
2011/02/20(日) 07:21:55.93238デフォルトの名無しさん
2011/02/20(日) 19:51:45.98 ttp://hogehoge とかにも対応したいんで正規表現で逝きます
239デフォルトの名無しさん
2011/02/21(月) 18:15:28.88240デフォルトの名無しさん
2011/02/21(月) 19:08:05.82 壊れたHTML文書に出会いませんように
241デフォルトの名無しさん
2011/02/22(火) 02:13:32.37242デフォルトの名無しさん
2011/02/22(火) 21:29:41.55 >>241
htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
htmlparserってきっちり書かれたHTML以外は容赦なくはねるよね。Webクローラに使うにはちょいと実用性がアレなので、
正規表現を駆使してアバウトなHTMLでも読めるHTMLパーサを書いたことがあったが、実にしんどかった。
243デフォルトの名無しさん
2011/02/22(火) 21:39:40.08 つlxml.html
244デフォルトの名無しさん
2011/02/24(木) 16:49:31.84 Beautiful Soupってどうなの?
245デフォルトの名無しさん
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のフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
以下のページにある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のフォルダ内かどこかに
入れないといけないのでは無いかと思うのですが
モジュールを格納してる場所がどこにあるのか分かりません。
おしえてください><
247デフォルトの名無しさん
2011/03/01(火) 01:40:52.05 【 課題 】
ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ
それが回文数になるまで同じ操作を繰り返したとき
最も回文数になりにくい 3桁の数を見つけてください
【 Ver 】Python2.x
【 補足 】
回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです
なお 2桁の場合は 89, 98 が最大で 24回だそうです
ある 3桁の数とそれぞれの桁を逆に並べた 3桁の数を足し合わせ
それが回文数になるまで同じ操作を繰り返したとき
最も回文数になりにくい 3桁の数を見つけてください
【 Ver 】Python2.x
【 補足 】
回文数とは 44 や 363 のように逆に並べると元の数と同じ数になるものです
なお 2桁の場合は 89, 98 が最大で 24回だそうです
248デフォルトの名無しさん
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
しょーがねぇ、俺がとっておきを披露してやろう。
#! /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
249デフォルトの名無しさん
2011/03/01(火) 23:39:48.44 ひどすぎる
250デフォルトの名無しさん
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で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
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で
かなり時間がかかって、ちょっと待っても戻ってこない
もっと賢いことをやらないと駄目そう
251デフォルトの名無しさん
2011/03/02(水) 01:13:16.28252デフォルトの名無しさん
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))
以下のコードを書いたのですが、タプルを返してるつもりが、
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))
253デフォルトの名無しさん
2011/03/02(水) 02:08:52.72 >>252
else: の後をよく見てみよう。
else: の後をよく見てみよう。
254デフォルトの名無しさん
2011/03/02(水) 02:12:23.22 return がなかったです…。ありがとうございます。これで寝られます。
255デフォルトの名無しさん
2011/03/04(金) 18:30:06.95 ベストアンサーまだですか?
256デフォルトの名無しさん
2011/03/05(土) 21:50:19.02 回文数を先に抜き出して、そこから足し合わせじゃなく引き合わせにすれば速くなるか…な
257デフォルトの名無しさん
2011/03/06(日) 18:48:07.22258デフォルトの名無しさん
2011/03/06(日) 19:04:24.47259デフォルトの名無しさん
2011/03/06(日) 20:04:42.97 >>258
であれば、ひっくり返した数が100未満ならその時点で除外できなくね?
であれば、ひっくり返した数が100未満ならその時点で除外できなくね?
260デフォルトの名無しさん
2011/03/06(日) 20:38:31.99 >>259
そう思う。
そう思う。
261デフォルトの名無しさん
2011/03/07(月) 08:19:40.19262デフォルトの名無しさん
2011/03/07(月) 08:22:53.77263デフォルトの名無しさん
2011/03/07(月) 14:06:29.17 196
295
394
493
592
689
691
788
790
879
887
978
986
さぁどれだ
295
394
493
592
689
691
788
790
879
887
978
986
さぁどれだ
264デフォルトの名無しさん
2011/03/07(月) 16:12:10.53 ちょっと何言いいたいのか分からないっすね
265デフォルトの名無しさん
2011/03/08(火) 02:39:40.59 ある程度長いのが絞られてきたみたいですね
266デフォルトの名無しさん
2011/03/08(火) 03:04:11.21 ある3桁の数(単数か複数かは不明)が回文数にならないことを証明することは出来ていないんだろうか?
267デフォルトの名無しさん
2011/03/08(火) 09:16:55.89 回文数にならないものってどうやって見つけんのよ
268デフォルトの名無しさん
2011/04/25(月) 20:07:16.29269268
2011/04/25(月) 20:08:36.16 誤 aを1回操作すると788になるから
正 aを1回操作すると887になるから
正 aを1回操作すると887になるから
270デフォルトの名無しさん
2011/04/26(火) 01:30:26.68 http://en.wikipedia.org/wiki/Lychrel_number
でぐぐったら、結構出てくるなぁ。
でぐぐったら、結構出てくるなぁ。
271デフォルトの名無しさん
2011/04/27(水) 17:55:15.88 >>267
少なくとも判定は出来ると思う
3桁の数なら
「回文数になる」
「回文数になる前に(おおざっぱに)1000個の数字がすべて出てくる」
「1000個出てこなくてもどこかで同じ数字が出てきて循環する」
のどれかになるんじゃないかな
少なくとも判定は出来ると思う
3桁の数なら
「回文数になる」
「回文数になる前に(おおざっぱに)1000個の数字がすべて出てくる」
「1000個出てこなくてもどこかで同じ数字が出てきて循環する」
のどれかになるんじゃないかな
272デフォルトの名無しさん
2011/04/27(水) 19:16:53.31273デフォルトの名無しさん
2011/04/27(水) 20:12:16.88274デフォルトの名無しさん
2011/04/28(木) 01:13:33.28 ロングパス入りました。
275デフォルトの名無しさん
2011/04/28(木) 01:21:22.71 >>372
世の中には、勘違いしてても気づかない奴もいるって事よ。
世の中には、勘違いしてても気づかない奴もいるって事よ。
276デフォルトの名無しさん
2011/04/29(金) 20:53:12.21 ゴールドバッハの予想
与えられた値を2つの素数の和で現してください
verは出来れば2.6で
エラトステネスのふるいを用いた素数リストを使って値を出すようにしてください
お願いします
与えられた値を2つの素数の和で現してください
verは出来れば2.6で
エラトステネスのふるいを用いた素数リストを使って値を出すようにしてください
お願いします
277デフォルトの名無しさん
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
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
278デフォルトの名無しさん
2011/04/30(土) 06:55:17.50279デフォルトの名無しさん
2011/06/02(木) 06:22:08.84 日本の大学とかでPythonの宿題がでる(Python使って教えている)ところって多いの?
280デフォルトの名無しさん
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でもこういうハッシュ+リストみたいなのを実現するにはどうやれば
いいでしょうか?
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でもこういうハッシュ+リストみたいなのを実現するにはどうやれば
いいでしょうか?
282デフォルトの名無しさん
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階層で単語のタプルをキーにすることもできるね。
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階層で単語のタプルをキーにすることもできるね。
283デフォルトの名無しさん
2011/06/14(火) 21:16:40.59284デフォルトの名無しさん
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()
しかし、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()
285デフォルトの名無しさん
2011/08/01(月) 22:01:30.90 >しかし、lines.sort(cmp=lambda 〜 の 行の意味が解かりません。
名前付き引数
名前付き引数
286デフォルトの名無しさん
2011/08/03(水) 18:11:59.06 285です。
先のcmpはsort()の名前付き引数、後のcmpはcmp関数、という事は解かりました。
ですが、やはり、ファイル全体がソートされる動作が想像できません。
先のcmpはsort()の名前付き引数、後のcmpはcmp関数、という事は解かりました。
ですが、やはり、ファイル全体がソートされる動作が想像できません。
287デフォルトの名無しさん
2011/08/03(水) 18:13:27.10 286 です。 >285です。 は、284の間違いでした。
288デフォルトの名無しさん
2011/08/03(水) 19:31:32.77 了解
289デフォルトの名無しさん
2011/08/03(水) 21:03:18.52 >>286
sort()の中でリストの要素同士の大小比較をするときに、cmp引数で指定された比較関数を呼び出して
比較しているから、cmp引数でソートの挙動をカスタマイズできるんだよ。
文字列全体じゃなくて一部分だけを比較のキーにする、みたいに。
ちなみにcmp引数に何も指定しないと、要素そのものをキーとして組み込み関数のcmp関数を呼ぶ。
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])
と書ける。
sort()にkey引数ってのが導入されて、リストの要素からソートキーを得る関数を指定できる。
もちろん、指摘しなければリストの要素がそのままソートキーになるんだけど。
つまり>>286と全く同じことを
lines.sort(key = lambda x: x[10:15] + x[0:9])
と書ける。
291286
2011/08/04(木) 17:36:23.52292デフォルトの名無しさん
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のように置き換えたいです。
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のように置き換えたいです。
294デフォルトの名無しさん
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)
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)
295デフォルトの名無しさん
2011/11/04(金) 10:29:57.94 ↑汎用性のないしょぼいプログラム書いてんじゃねえよ死ね!
296デフォルトの名無しさん
2011/11/04(金) 10:58:40.79 宿題の題意には特記事項としての汎用性は求められていませんでしたが
297デフォルトの名無しさん
2011/11/04(金) 12:17:32.01 汎用性のあるコードを>>295が書けば解決
298デフォルトの名無しさん
2011/11/04(金) 12:48:15.42 情報が足りな過ぎる
何がしたいのか判らん
何がしたいのか判らん
299デフォルトの名無しさん
2011/11/17(木) 23:36:18.41 1から10までの整数の順列をすべて表示するプログラムをお願いします。
300299
2011/11/17(木) 23:40:57.76 299です。[1,2,3,4,5..,10]みたいな感じのリストになるようにお願いします。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】J1昇格PO決勝戦 千葉、来季のJ1昇格が決定 17年越しの悲願叶える…オリジナル10が05年以来のJ1にそろう [久太郎★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★6 [ぐれ★]
- 南京で「大虐殺」追悼式典 中国、高市政権をけん制 (共同通信) [少考さん★]
- 【鹿児島】容疑者は大学生。国道3号を横断中の母娘を車ではねる――「太陽がまぶしくて見えなかった」。20歳女を現行犯逮捕 日置署 [ぐれ★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★5 [ぐれ★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【高市速報】日本、イギリスフランスドイツに相次ぎ告げ口外交を開始wwwwwwww🤪 [931948549]
- アメリカの自動車団体、中国車の国内進出阻止を政府に要求 [838847604]
- 【悲報】(ヽ´ん`)「まるごとバナナ買おうとしたら219円に値上げしてたから自分で作ってやった。ほぼ半額」 [802034645]
- なかやま〜きんにくんだよ〜みたいな事言う女芸人いたじゃん?
- 【高市朗報】江戸走り、考案者大場克則さんに教わる正しい江戸走りのコツ動画 [699577814]
- (ヽ´ん`)「嫌儲はマジで高IQ集団だろ」 [357264179]
