2016-09-17 26 views
1

我必須編寫一個python程序,它允許用戶輸入一個奇數,n,大於或等於3。該程序輸出一個具有n行和n列的x。 *我的教授說使用嵌套for循環將是理想的。 X使用*的* *打印*在Python中使用*打印X

我一直在過去幾天進行試驗,並沒有取得成功。 這是我的程序開始代碼,之後它就像我的腦海一樣空白。如果你能夠提供一些關於代碼如何工作的解釋,那將是驚人的。

num=int(input("Please type in an odd integer.")) if num%2==0: print("Your number is incorrect")

+0

你有打印出來使用星號形狀的 'X'? –

+0

是的,5的示例輸入將輸出5列長5行的X. – ViktorTW

+0

我的建議是使用前3個輸入(3,5,7)繪製輸出。然後比較每一個模式,並且得出關於*和空間數量隨着輸入的每次增加如何變化的結論。 –

回答

0

這應做到:

的Python 2

N = 5 

for i in range(N): 
    for j in range(N): 
     if (i == j) or ((N - j -1) == i): 
      print '*', 
     else: 
      print ' ', 
    print '' 

的Python 3

N = 5 

for i in range(N): 
    for j in range(N): 
     if (i == j) or ((N - j -1) == i): 
      print('*', end = '') 
     else: 
      print(' ', end = '') 
    print('') 

(感謝Blckknght爲Python 3知識)

你」重新遍歷外部循環中的所有行,然後遍歷內部中的所有列或單元格。 if子句檢查你是否在對角線上。打印語句後的逗號可確保您不會在每次打印中獲得新行。一旦你完成了這一行,第三次打印給你一個新的線。

如果這對您有幫助/爲您工作;嘗試使用相同的方法制作Y,並在下面的註釋中發佈代碼。這樣你可以更多地理解你的理解。

+0

感謝您的回答!這實際上不適合我:/ – ViktorTW

+0

這使用Python 2樣式的'print'語句。 Python 3語法中的等價物是'print('*',end ='')'。 – Blckknght

+0

非常感謝!我正在使用Python 3,並與此混淆。我會盡量讓Y讓你知道它是如何運作的! – ViktorTW

0

我會給你一個提示:

n = int(input("Please type in an odd integer.")) 
for i in range(n): 
    print('x', end='') 
print() 

此打印X,N次在同一直線上,然後再回到下一行。

我會讓你弄清楚你如何打印同一行n次。

+0

這不是打印一個像這樣的x,我必須使用*和空格來打印X.我試圖在最初的帖子中將其清除。 – ViktorTW

0

for循環使用單:

for i in range(num): 
    a = [' '] * num 
    a[i] = '*' 
    a[num-i-1] = '*' 
    print(''.join(a)) 

使用嵌套的for循環:

for i in range(num): 
    s = '' 
    for j in range(num): 
     if j in [i, num-i-1]: 
      s += '*' 
     else: 
      s += ' ' 
    print(s) 
+0

這也適用,謝謝! – ViktorTW