2017-07-07 101 views
0

编写一个程序,该程序根据该元素的数据类型获取列表并为列表中的每个元素输出消息。基本Python循环和追加

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

所以上面是我想要完成的。如果我有时没有意义,我对这一切都非常陌生,所以很抱歉。现在我只是试图设置通过我的列表运行,并将任何str添加到字符串列表,并将任何int添加到我的num列表中。我尝试了很多方法并阅读文档,并试图寻求帮助,但我要么误读了东西,要么只是搜索错误的东西。任何帮助将不胜感激。

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

string = [] 
num = [] 

for i in range(len(stuff)): 
    if isinstance(i,str): 
     string.append(value,i) 
    if isinstance(i,int): 
     num.append(i) 

print (string) 
print (num) 
+0

就行'string.append(值,I)',什么是'value'应该是什么?它看起来不像其他地方定义的。 – Kevin

+0

你至少知道你最初的''stuff''列表的预期输出是什么?如果你这样做,那么你应该很容易为你的结果工作。如果你不这样做,你应该再次阅读作业,直到你做完。 –

+0

值未定义,您是正确的。我只是尝试不同的选择来尝试并使某些东西起作用 –

回答

0

您可以使用列表中理解一个快速,简洁的解决方案:

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

s = ''.join(i for i in stuff if isinstance(i, str)) 

a = sum(i for i in stuff if isinstance(i, int) or isinstance(i, float)) 

print(s) 

print(a) 

if len(s) > 0 and a > 0: 
    print("mixed") 

elif len(s) > 0 and a == 0: 
    print("string") 

elif len(s) == 0 and a > 0: 
    print("integer") 

输出:

magical unicornshelloworld 
19 
mixed 
+0

“你输入的数组是混合类型” “字符串:神奇的独角兽你好世界” “总和:117.98” –

+0

这就是我最终的结果是 –

+0

@RobertAmato这是正确的输出? – Ajax1234

0
stuff = ['magical unicorns',19,'hello',98.98,'world'] 

string = [] 
num = [] 

for i in stuff: 
    if isinstance(i,str): 
     string.append(i) 
    if isinstance(i,int): 
     num.append(i) 

print (string) 
print (num) 
+1

这只是从问题的代码复制和粘贴 - 这怎么可能是答案? –

+0

@ mpf82:我想这不是复制和粘贴..因为我在东西和我在len(东西)不同 – Harsha

+0

对不起,所以它不是复制和粘贴,但它仍然是不正确的(例如,未定义的“价值”仍然存在)和它不会打印出所需的值。 –

0
for i in range(len(stuff)) 

这将遍历指标哟你的名单。所以,您只会将此索引附加到您的清单num

做相同的循环,但用for i in stuff代替for i in range(len(stuff))。有了这个,你将遍历你的列表元素

0

这应该可以做到。

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

s = "" 
num = 0 
hasnum = False 
hasstr = False 

for i in stuff: 
    if isinstance(i, str): 
     s += i 
     hasstr = True 
    if isinstance(i, int): 
     num += i 
     hasnum = True 

print (string) 
print (num) 
if hasnum and not hasstr: 
    print "Only ints" 
elif hasstr: 
    print "Only strs" 
else: 
    print "Mixed" 
+0

你使用'type'而不是'isinstance'的任何特定原因? – Kevin

+0

我只是喜欢它的样子 –

+2

但[Python风格指南](https://www.python.org/dev/peps/pep-0008/)说“对象类型比较应该总是使用isinstance()而不是比较类型直接。“ – Kevin

0

想象python for循环作为其他语言中的foreach循环。所以我们想遍历东西列表中的每个项目。 然后,我们想要使字符串和数字的运行总数。 下面是一个简单的循环,其实现这一点:)

from numbers import Number 
stuff = ['magical unicorns',19,'hello',98.98,'world'] 

running_string = '' 
running_total = 0 

for item in stuff: 
    if isinstance(item, basestring): 
     running_string += item 
    if isinstance(item, Number): 
     running_total += item 

print running_total 
print running_string 
if running_string and running_total: 
    print 'mixed' 
elif running_string: 
    print 'string' 
elif running_total: 
    print 'int' 
else: 
    print 'empty' 
+0

@ Warmley-顶线完成了什么?从数字进口号码 –

+0

号码是一个蟒蛇类,所有数字继承自:) https://docs.python.org/2.7/library/numbers.html?highlight=number#module-numbers – Warmley