2017-07-07 102 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