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('/')

但是第一个需要另一个论点,而我不确定第二个应该去哪里。

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 回答