0

我是一名初学者程序员,我需要帮助从列表中提取数字并将它们转换回整数。该程序接受一个数字输入(如 305.67)并拆分为 305 和 67。附件是显示未完成部分的代码。任何帮助表示赞赏,谢谢!

def getDollarFormatText(dolAndCent):

    separateDolCent = str(dolAndCent).rsplit('.',1)

    return separateDolCent
4

2 回答 2

3

你是如此接近!

def getDollarFormatText(dolAndCent):

    separateDolCent = [int(x) for x in str(dolAndCent).split('.')]

    return separateDolCent

我在 [int(x) for x in dolAndCent.split('.')] 中所做的事情是列表推导式(列表推导式在 python中是一个非常常见的习语,一旦你熟悉了它们就非常强大)。本质上,它将您的字符串拆分为“。” (就像你之前所做的那样),然后创建一个小循环来遍历每个元素('.' 之前和之后的部分)。对于其中的每一个,它都转换为带有int. 功能。

我改成rsplitsplit因为你从字符串的哪一边分开并不重要,我删除了1因为只有一个 '.' 反正。


作为旁注,没有理由创建separateDolCent变量:

def get_dollar_format_text(dol_and_cent):
    '''Returns the dollar and cents part of a money amount as
    a two element list of integers, where the first element is
    dollars and the second is cents.
    '''
    return [int(x) for x in str(dol_and_cent).split('.')]

请注意我如何将您的变量从 更改camelCaseusing_underscores。这是 python 社区中函数和变量名称的首选。我还使用文档字符串向您的函数添加了一些文档。


如果您需要处理2,3.4或之类的数字345.4311,可以对代码进行以下编辑:

def get_dollar_format_text(dol_and_cent):
    '''Returns the dollar and cents part of a money amount as
    a two element list of integers, where the first element is
    dollars and the second is cents.
    '''
    return [int(x) for x in '{0:.2f}'.format(dol_and_cent).split('.')]

这样做是强制数字始终以两位小数格式化,因此2变为2.003.4变为3.40345.4311变为345.43。这样,您总是得到两位小数的美分。

于 2013-10-05T17:02:27.490 回答
2

您快到了:

def getDollarFormatText(dolAndCent):

    separateDolCent = map(int,str(dolAndCent).rsplit('.',1))

    return separateDolCent

如何能够将每个整数保存到一个新变量中?

只需将它们提取到两个变量中(例如ab):

def getDollarFormatText(dolAndCent):

        a,b = map(int,str(dolAndCent).rsplit('.',1))

        print a
        print b

getDollarFormatText("5.70")

这将打印:

5
70
于 2013-10-05T17:03:01.857 回答