典型的Python金字塔模式

huangapple go评论71阅读模式
英文:

Typical pyramid pattern in python

问题

我将为您翻译代码部分,以下是翻译好的代码:

  1. n = 8
  2. k = 65
  3. p = 1
  4. for i in range(n):
  5. for j in range(i, n):
  6. print(" ", end="")
  7. for j in range(i + 1):
  8. if i % 2 == 0:
  9. print(chr(k), end=" ")
  10. else:
  11. print(p, "*", end="")
  12. p += 1
  13. k += 1
  14. print()

如果您有任何其他问题,欢迎提出。

英文:

How to print the below pattern in python:

  1. A
  2. 2*2
  3. B*B*B
  4. 3*3*3*3
  5. C*C*C*C*C
  6. 4*4*4*4*4*4
  7. D*D*D*D*D*D*D
  8. 5*5*5*5*5*5*5*5
  1. n=8
  2. k=65
  3. p=1
  4. for i in range(n):
  5. for j in range(i,n):
  6. print(" ",end="")
  7. for j in range(i+1):
  8. if(i%2==0):
  9. print(chr(k),end=" ")
  10. else:
  11. print(p,"*",end="")
  12. p+=1
  13. k+=1
  14. print()

答案1

得分: 1

根据我的理解,你可以使用一个循环来实现:

  1. n = 8
  2. k = 65
  3. for i in range(n):
  4. # 决定是字母还是数字
  5. c = str(i // 2 + 2) if i % 2 else chr(k + i // 2)
  6. # 用空格填充,添加重复字符并用"*"连接
  7. print(' ' * (n - i - 1) + '*'.join([c] * (i + 1)))

注意:这仅适用于n小于或等于17的情况。对于更大的n,你需要定义额外的规则来处理具有多个数字的情况。

输出:

  1. A
  2. 2*2
  3. B*B*B
  4. 3*3*3*3
  5. C*C*C*C*C
  6. 4*4*4*4*4*4
  7. D*D*D*D*D*D*D
  8. 5*5*5*5*5*5*5*5
英文:

IIUC, you can use a single loop:

  1. n=8
  2. k=65
  3. for i in range(n):
  4. # decide whether alpha or digit
  5. c = str(i//2+2) if i%2 else chr(k+i//2)
  6. # pad with spaces, add repeated character joined with "*"
  7. print(' '*(n-i-1) + '*'.join([c]*(i+1)))

NB. this only works up to n=17, then you'd need to define an additional rule to handle numbers with multiple digits.

Output:

  1. A
  2. 2*2
  3. B*B*B
  4. 3*3*3*3
  5. C*C*C*C*C
  6. 4*4*4*4*4*4
  7. D*D*D*D*D*D*D
  8. 5*5*5*5*5*5*5*5

答案2

得分: 0

你的程序几乎完成了,只需进行一些小的更改:

  1. 目前你的程序输出了这个:
  1. A
  2. 2 *2 *
  3. C C C
  4. 4 *4 *4 *4 *
  5. E E E E E
  6. 6 *6 *6 *6 *6 *6 *
  7. G G G G G G G
  8. 8 *8 *8 *8 *8 *8 *8 *8 *

你当前在数字后面得到了空格。这是Python 自动打印的。你可以通过将数字转换为字符串来避免这个问题。

  1. 你在每行的末尾多了一个 *。你可以通过在每个数字后打印 *,除了最后一个之外,来修复这个问题。

  2. 数字和字母在每一行之间都会递进,而不是每两行递进一次。

尝试这个:

  1. n = 8
  2. k = 65
  3. p = 1
  4. for i in range(n):
  5. for j in range(i, n):
  6. print(" ", end="")
  7. for j in range(i + 1):
  8. if i % 2 == 0:
  9. print(chr(k), end="")
  10. if j < i:
  11. print("*", end="")
  12. else:
  13. print(str(p), end="")
  14. if j < i:
  15. print("*", end="")
  16. if i % 2 == 0:
  17. p += 1
  18. k += 1
  19. print()

结果输出:

  1. A
  2. 2*2
  3. B*B*B
  4. 3*3*3*3
  5. C*C*C*C*C
  6. 4*4*4*4*4*4
  7. D*D*D*D*D*D*D
  8. 5*5*5*5*5*5*5*5
英文:

Your program is very nearly there: a couple of small changes

Your program is currently outputting this:

  1. A
  2. 2 *2 *
  3. C C C
  4. 4 *4 *4 *4 *
  5. E E E E E
  6. 6 *6 *6 *6 *6 *6 *
  7. G G G G G G G
  8. 8 *8 *8 *8 *8 *8 *8 *8 *
  1. You are currently getting spaces after the numbers. This is automatically printed by Python. You can avoid this by converting the number to a string.

  2. You are getting an extra * at the end of rows. You can fix this by printing the * on after each number except the last.

  3. The numbers and letters are advancing once on each row, rather than once every two rows

Try this:

  1. n=8
  2. k=65
  3. p=1
  4. for i in range(n):
  5. for j in range(i,n):
  6. print(&quot; &quot;,end=&quot;&quot;)
  7. for j in range(i+1):
  8. if(i%2==0):
  9. print(chr(k),end=&quot;&quot;)
  10. if j&lt;i:
  11. print(&quot;*&quot;,end=&quot;&quot;)
  12. else:
  13. print(str(p),end=&quot;&quot;)
  14. if j&lt;i:
  15. print(&quot;*&quot;,end=&quot;&quot;)
  16. if i%2 ==0:
  17. p+=1
  18. k+=1
  19. print()

Resulting output:

  1. A
  2. 2*2
  3. B*B*B
  4. 3*3*3*3
  5. C*C*C*C*C
  6. 4*4*4*4*4*4
  7. D*D*D*D*D*D*D
  8. 5*5*5*5*5*5*5*5

huangapple
  • 本文由 发表于 2023年2月19日 20:39:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/75500204.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定