如果item是一个字符串,则将其连接到一个新字符串。如果是数字,请将其添加到运行总和中

时间:2017-05-09 00:46:22

标签: python string algorithm syntax

我想编写一个程序来获取列表,并根据该元素的数据类型为列表中的每个元素打印一条消息。

程序输入始终是一个列表。对于列表中的每个项目,请测试其数据类型。如果该项是字符串,则将其连接到新字符串。如果是数字,请将其添加到运行总和中。在程序结束时打印字符串,数字和数组包含的分析。如果它只包含一种类型,则打印该类型,否则,打印混合'。

输入

l = ['magical unicorns',19,'hello',98.98,'world']

输出

"The array you entered is of mixed type"
"String: magical unicorns hello world"
"Sum: 117.98"

2 个答案:

答案 0 :(得分:0)

此代码有效,您需要在输入列表中逻辑访问所需的每个元素。在这里,我为我的浮点数和我的字符串创建了单独的列表。然后,从那里,您可以遍历这些新列表以连接并总结您想要的任何内容。

l = ['magical unicorns',19,'hello',98.98,'world']


item_type_set = set() # Create an empty set to add unique item types to it.
nums = []
string_lst = []

for item in l:

    item_type = type(item) # This returns the type

    item_type_set.add(item_type)

    #Test for each data type.
    if item_type == int:
        float_item = float(item)
        nums.append(float_item)


    elif item_type == float:
        nums.append(item)

    elif item_type == str:
        string_lst.append(item)



if len(item_type_set) > 1:

    print ("The array you entered is of mixed type")

elif len(item_type_set) == 1:

    for item in item_type_set:

        if item == str:
            str_type = 'string'
            print ("The array you entered is of %s type" %(str_type))

        elif item == int:
            int_type = 'integer'
            print("The array you entered is of %s type" % (int_type))

        elif item == float:

            float_type = 'float'
            print("The array you entered is of %s type" % (float_type))

if len(string_lst) > 0:
    new_string = string_lst[0]

    for string_item in string_lst[1:]:
        new_string += ' ' + string_item

    print ('String: ' + new_string)


counter = 0.0
for number in nums:

    counter += number

print ("Sum: " + str(counter))

答案 1 :(得分:0)

所以,就在这里。打破你的问题。 您有两种情况需要处理

  • 混合输入
  • 字符串输入
  • int / float input

您可以使用isinstance()来确定输入类型。

  • 如果输入类型为int / float,则将其添加到sum变量,该变量最初为0
  • 如果输入类型是字符串,则将其添加到最初为空的string变量中 - “

即,

l = ['magical unicorns',19,'hello',98.98,'world']
sum=0
string=''
data = [False,False]
for i in l:
    if isinstance(i,float) or isinstance(i,int):
        sum+=i
        data[0]=True
    else:
        string+= i + ' '
        data[1]=True

if all(data):print "The array you entered is of mixed type\nString %s\nSum: %.2f"%(string.strip(),sum)
elif data[1]:print "The array you entered is of string type\nString: %s"%string.strip()
elif data[0]:print "The array you entered is of int type\nSum: %.2f"%sum

输出:

The array you entered is of mixed type
String magical unicorns hello world
Sum: 117.98