0

これは、「マップ」機能を教える課題です。

ユーザーが「1/2」や「6/19」などの分数を入力すると、文字列から整数のタプルに変換されます。

すべての分数が入力されると、タプルのリストが返されます。

私はそのリストを使ってタプルを削減、フィルター、およびソートしますが、問題を開始してリストを取得する方法さえわかりません。

以下は、何が機能するかの例です。

入力された分数を回すのに助けが必要です:

Enter fraction: 1/2
Enter fraction: 6/19
Enter fraction: 20/8

タプルに

(1, 2)
(6, 19)
(20, 8)

すべての分数を取得したら、タプルのリストを返す必要があります

[(1, 2), (6, 19), (20, 8)]

これは私がこれまでに持っているものです:

def prompt_fractions():
    frac_list = []
    while True:
        my_frac = input("Enter fraction: ")
        if my_frac == "stop":
            return frac_list
        else:
            print(my_frac)
            frac_list.append(my_frac)

def main():
    frac_list = prompt_fractions()
    print(frac_list)

使ってみた

my_frac = list(map(prompt_fractions, my_frac))

my_frac = my_frac.split('/')

しかし、最初の引数には別の引数が必要で、2 番目の引数をどこに使用すればよいかわかりませんでした。

4

1 に答える 1

2

あなたはほとんどそこにいました。my_frac.split('/')整数のタプルではなく、文字列のリストを返します。

>>> '1/2'.split('/')
['1', '2']

したがって、変換する必要があります。map()ここで便利です:

my_frac = tuple(map(int, my_frac.split('/')))

これにより、分割結果の各部分が最初に整数に変換されるタプルが生成されます。

>>> tuple(map(int, '1/2'.split('/')))
(1, 2)
>>> tuple(map(int, '6/19'.split('/')))
(6, 19)
>>> tuple(map(int, '20/8'.split('/')))
(20, 8)
于 2014-10-26T00:06:38.703 に答える