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

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

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

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

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

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

90:デフォルトの名無しさん
10/01/18 17:06:43
>>89
> 比較用の値ってなんですか?
例えば、[3, -4, 10, -1]を
絶対値の大きさ順に並べるとすると
比較用の値は[3, 4, 10, 1]になる。
具体的には、

>>> A = [3, -4, 10, -1]
>>> B = map(abs, A)
>>> B
[3, 4, 10, 1]
>>> mysort(A, B)
[-1, 3, -4, 10]
>>> sorted(A, key=abs)
[-1, 3, -4, 10]

これで理解できなければ
アルゴリズムの教科書をソートキーで引いてくれ。

91:85
10/01/18 22:42:26
>>88さんの方法でできました。
たった1行で出来ちゃうんですね。十数行も書いたあげく動かなかった俺って…
ありがとうございました。

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

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

94:デフォルトの名無しさん
10/01/27 01:46:02
#!/usr/bin/python
import Tkinter as Tk
import time
from functools import partial
class NoodleTimer(Tk.Frame):
    def __init__(self, master=None):
        Tk.Frame.__init__(self, master)
        self.label = Tk.Label(self, text='Timer', font='Arial 20')
        self.label.pack(side='left')
        menubutton = Tk.Menubutton(self, text='>')
        menubutton.pack()
        menu = Tk.Menu(menubutton, tearoff=0)
        menu.add_command(label='1 minutes', command=partial(self.start,  60))
        menu.add_command(label='3 minutes', command=partial(self.start, 180))
        menu.add_command(label='5 minutes', command=partial(self.start, 300))
        menubutton.config(menu=menu)
    def start(self, sec):
        self.finish_time = time.time() + sec
        self.tick()
    def tick(self):
        t = self.finish_time - time.time()
        if t < 0:
            self.label.config(text="Time's up!")
        else:
            self.label.config(text='%02d:%02d'%(t/60, t%60))
            self.after(100, self.tick)
if __name__ == '__main__':
    app = NoodleTimer()
    app.pack()
    app.mainloop()


95:デフォルトの名無しさん
10/01/27 02:51:47
>>94
すごい!
ありがとうございます。
参考にして勉強させて頂きます。

ちなみにVBも平行して学習しているんですが(意外といい)
出てくる用語はほぼ同じと考えてもいいですか?
クラスとか、継承とか、オブジェクトとか


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

110:デフォルトの名無しさん
10/02/14 02:51:13
>>108
いかにも使い捨てっぽいプログラムに高望みしないの。
エディタに正規表現置換ついてるでしょ。

>>109
with open("hoge.txt") as f:
 lines = [line for line in f]
 print random.choice(lines)

111:デフォルトの名無しさん
10/02/14 13:43:29
タプルって何?

112:デフォルトの名無しさん
10/02/14 13:59:28
immutable(変更不能)なシーケンス
dictのキーにできる
わからなければリストを使ってれば良い

113:ゆかちん
10/02/14 15:30:01
あん、できた。ありがとうございますん!

114:デフォルトの名無しさん
10/02/14 15:33:23
print 'aaa'

if boolean :
    ~ここ~

print 'bbb'
print 'ccc'



上のソースにて、~ここ~の部分に何か入れて、
このプログラムを終了してしまいたいのですが、
どうすればいいでしょうか?
booleanがTrueの時にプログラムを終了したいということです。
よろしくお願い申し上げます。


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

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

if boolean :
raise Exception

print 'bbb'
print 'ccc'

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


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

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

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

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


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

123:デフォルトの名無しさん
10/02/24 23:50:04
URLリンク(www.python.jp)

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

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

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

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch