為什麼上面和其餘字串一起print的時候需要str,下面單獨print的時候不需要str

時間 2021-05-29 23:00:22

1樓:晴空萬里

你的cars是乙個列表型別,sorted cars是對列表進行排序,得到的還是乙個列表,你後面讓乙個列表和乙個字串相加,因為列表和字串不是乙個型別,所以相加就會報錯。

2樓:光明心

1.print的內容前面是一串字串,後面是列表,字串和列表不能用+。

2.將list轉成str,然後可以用+:

print('Here is the sorted list:'+''.join(sorted(cars)))

3.print多個元素之間用,分隔

print('Here is the sorted list:',cars)

4.不轉格式,用F模式print(注意{}中間的變數後面:後面還可以設定輸出格式,比較推薦這種方式):

print(F'Here is the sorted list:')

3樓:Seven00007

在python中,+ 作為連線字串的功能時,兩側都必須是字串。str()的功能時將裡面的引數強轉成字串,就這麼簡單

4樓:sum

+號連線的是字串和字串。上面那個,後面部分是list,所以報錯了。下面那個是因為你把後面部分的list用str強制型別轉換成字串了,所以能夠用+號連線。

這跟print沒什麼關係。

5樓:彼得大碗

其實錯誤提示已經講得很清楚:出現了型別錯誤 -- 只能連線字串到字串,而不能將列表連線到字串。

問題就出在加號的使用上,這句提示就是針對加號來說的,就是說不能將字串和列表「加」在一起:cars 是列表, 用 sorted() 函式來排序後的 sorted(cars) 還是列表,print ("He is ..." + sorted(cars)) 就是將字串和列表「加」在一起了,所以會報錯。

上面說了,字串可以連線(「加」)到字串, str (sorted(cars)) 就是將排序好的列表整體「變成」了乙個字串,即 "['a', 'b', 'c', 'd']" , 所以 print(" here is ..." + str (sorted(cars))) 就可以順利顯示了。

而 print(sorted(cars)) 與 print(cars) 原理是一樣的,能夠順利顯示肯定沒有什麼好奇怪的。

就像其他朋友所說的,要想將不同型別的物件放在一起(注意是放在一起,而不是連線或者「加」在一起)來顯示(print),可以使用英文的逗號,比如您將上面的例子改為 print("He is ... " , sorted(cars)) 就能夠順利顯示了。

這些規則是發明者制定的,使用者只能乖乖地遵守了,否則機器肯定不讓您通過,呵呵。

6樓:不正經禪師

這不是print的問題,print函式你放進去什麼都可以列印,因為在列印的時候會自動轉為str。

上面報錯的原因是把字串"Here is the sorted list :"與後面的列表sorted(cars)相加,字串與列表是不能相加的,所以報錯。而後面直接列印列表是允許的

7樓:張七少

print 列印是會呼叫物件 __str_方法,輸出方法返回值,當然返回值必須是 str,內建物件例如int,list,dict,bool等等都已經實現了這個方法,當然如果沒實現這個方法,會預設輸出物件名稱和記憶體ID。

單獨列印這些物件都不會有這個問題,但是你將兩個物件用 + 連線起來,+ 會呼叫+前面物件的 __add__ 方法,str的+是連線字串,返回值是str,list的+是擴充套件列表,返回值是list。這裡你用 str+list,不同型別的變數當然不能直接+。

如果相同時輸出兩個不同型別變數的值,可以像下面這樣,不同變數用「,」隔開

print

("here ......"

,cars)

為什麼C 庫開發人員都喜歡自己造乙個字串類?你見過效能最好開源字串類是哪個? 為什麼?

我就不太愛用字串庫,std string 用的時候自己調教一下也能湊合,更何況現代語言的字串,幾乎沒有設計正確的 STL 如果是下品,很多語言也只不過是中品,因此我也就不挑了。至於為什麼自己實現,因為追求效能啊,幹什麼事就要用什麼工具,不比其他語言,用 C 就是要追求高效,而 STL 很多情況下並不...

為什麼不能和朋友一起創業?

舊夢 朋友之間合作做專案,就像是一場考試,有些朋友成績不及格,有些朋友能及格,還有一些會打滿分。這場考試,不光是檢驗別人,也是在檢驗你自己。很多人都說,人性是經不住考驗的,這話說的對,但是我們不是去考驗人性,不是讓朋友在生死面前做選擇,也不是讓他放棄榮華富貴陪你去流浪,你們只是一起做生意,順便看看這...

你為什麼沒有和ta在一起?

硃砂易夢 大概是那年留下太多的不愉快,會不自覺的恐懼吧,就算還愛著。剛和別的男生出去吃飯在想,如果走在我旁邊的是你,我一定貼到你身上,挽著你。過了那個偷偷摸摸的年紀,卻沒有了我們。那個永恆的夜晚 十七歲仲夏 你吻我的那個夜晚 歌詞裡的遺憾 今天突然發現 你吻我的那個夜晚 我也剛好十七歲 Vinfer...