【问题标题】:Turning a string to a tuple of integers, which is added to a list of tuples将字符串转换为整数元组,将其添加到元组列表中
【发布时间】:2016-09-01 22:30:56
【问题描述】:

这是一项旨在教授“地图”功能的作业。

用户输入“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('/')

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

【问题讨论】:

    标签: python string list tuples map-function


    【解决方案1】:

    你快到了; 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)
    

    【讨论】:

    • 非常感谢!我知道这是一个简单的修复,但我只是不知道那是什么。
    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多