假設您使用的是Python 3,則代碼中會出現很多錯誤。讓我們來看看他們:
主要問題
的j
變量
您使用j
變量,在環情況下,未設置任何地方都不使用。這將導致一個錯誤:
while j<numTri:
我相信你想使用的x
變量:
while x<numTri:
print()
是
在Python 3,你應該把參數的函數括號之間的一個print()
函數,但並非如此:
print y
太容易解決:
print(y)
注意,括號在Python 2可選。
'*'
字符不帶引號:
您嘗試將'*'
字符的字符串從y
追加,但不與引號括起來的字符:
y = y + *
的解釋會看到這個星號乘法運算符會產生錯誤。只需用引號括起來(單層或雙層,這並不重要):
y = y + '*'
壓痕問題
代碼中的一個特別緻命的問題是,第二while
循環之後,你的代碼完成不會返回到循環的相同縮進級別。我換成下面open boxes的空間,所以我們可以指望他們:
␣␣␣while z<numRow:
␣␣␣␣␣␣␣␣␣print y
␣␣␣␣␣␣␣␣␣y = y + *
␣␣␣␣␣␣␣␣␣z += 1
␣␣␣␣x += 1
␣␣␣␣numRow += 1
唉,當與while
線相比有在最後兩行一個更大的空間。你應該刪除那些虛假的空間。
所產生的代碼將是:
numTri = input('Please umber of triangles: ')
numTri = eval(numTri)
numRow = 2
x = 0
while x<numTri:
y = '*'
z = 0
while z<numRow:
print(y)
y = y + '*'
z += 1
x += 1
numRow += 1
小問題
也有在你的代碼中的一些其他細節將被視爲陋習。這些對你來說無關緊要還有,既然你是真的是新手,但是我們可以探索其中的一些。
避免eval()
eval()
是一個功能強大且有風險的功能,所以我們避免使用它。這是特別容易在你的情況做,因爲int()
將讀取字符串轉換爲整數沒有問題:
numTri = input('Please umber of triangles: ')
numTri = int(numTri)
非標準縮進
有時候,你縮進你有什麼循環裏面四個空格:
␣␣␣y = '*'
␣␣␣z = 0
␣␣␣while z<numRow:
然後用六個空格
␣␣␣␣␣␣print(y)
␣␣␣␣␣␣y = y + '*'
␣␣␣␣␣␣z += 1
,甚至與四個空格,這將導致一個錯誤:
␣␣␣␣x += 1
␣␣␣␣numRow += 1
做的最好的事情是要始終使用相同的縮進大小。PEP 8(一組適用於所有的Python程序員建議)建議使用四個空格爲每一個凹陷:
␣␣␣␣y = '*'
␣␣␣␣z = 0
␣␣␣␣while z<numRow:
␣␣␣␣print(y)
␣␣␣␣y = y + '*'
␣␣␣␣z += 1
␣␣␣␣x += 1
␣␣␣␣numRow += 1
while
而不是for
這一個是硬的東西新手,但它可能會有所幫助儘管如此。您的代碼會更好,如果你使用for
循環與range()
功能:
for x in range(0, numTri+1):
y = '*'
for z in range(0, numRow+1):
print(y)
y = y + '*'
numRow += 1
然而,當你是一個學生,我相信你會了解此功能在未來的一段時間,所以把它簡單: )
生成的代碼:
numTri = input('Please umber of triangles: ')
numTri = int(numTri)
numRow = 2
for x in range(0, numTri+1):
y = '*'
for z in range(0, numRow+1):
print(y)
y = y + '*'
numRow += 1
'numTri = EVAL(numTri)'NOOOOOOO –
@Jakob鮑耶:打我吧! –
y = y + *也是可疑的 –