2016-11-07 148 views
2

我有一個打印x個數字的代碼。首先,我問了一個嚴重的問題。然後打印所有以前的數字(從0到x)。(Python 3)避免在打印結束時打印逗號(variableName,end =',')

我的問題是: 當打印這些數字時,我想用逗號分隔它們。我用print(a,end =',')但是這個打印結尾也是逗號。例如。像這樣打印1,2,3,4,5,而最後一個逗號不應該在那裏。

我用if語句來解決這個問題,但不知道是否有更簡單的方法來做到這一點。

n=int(input("enter the length ")) 
a=0 
if n>0:  
    for x in range(n): 
     if x==n-1: 
      print(a,end='') 
     else: 
      print(a,end=',') 
     a=a+1 
+1

'打印( '' 聯接([STR(x)的對中的x範圍(N)])。)'? – roganjosh

+0

你已經有了你的問題的答案,爲什麼你問一個你已經知道答案的問題? – Douglas

+2

@roganjosh將'x'轉換爲'str'。 –

回答

1

這樣做的最Python的方式是使用列表理解和join

n = int(input("enter the length ")) 
if (n > 0): 
    print(','.join([str(x) for x in range(n)])) 

輸出:

0,1,2 

說明:

  • ','.join(...)連接使用該字符串傳遞的任何迭代(本例中爲',')。如果你想在你的號碼之間留有空格,你可以使用', '.join(...)

  • [str(x) for x in range(n)]list comprehension。基本上,對於range(n)中的每xstr(x)被添加到列表中。這基本上轉化爲:

    data = [] 
    for (x in range(n)) 
        data.append(x) 
    
0

一個Python的方式做,這是收集在一個列表中的值,然後全部打印出來一次。

n=int(input("enter the length ")) 
a=0 
to_print = [] # The values to print 
if n>0:  
    for x in range(n): 
     to_print.append(a) 
     a=a+1 
print(*to_print, sep=',', end='') 

最後一行打印的to_print通過','分隔,而不是用新行結束的項目(有*展開)。

在此特定情況下,所述代碼可被簡化爲:

print(*range(int(input('enter the length '))), sep=',', end='')