数控铣床编程简单图案:在 Python中打印简单的菱形图案

关于数控铣床编程简单图案的问题,在3 stars in a row中经常遇到, 我想在 Python 3.5 中打印以下模式(我是新的编码):

我想在 Python 3.5 中打印以下模式(我是新的编码):

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

但我只知道如何使用的代码打印以下内容,但不知道如何反转它,使其成为一个完整的钻石:

n = 5
print("Pattern 1")
for a1 in range (0,n):
    for a2 in range (a1):
        print("*", end="")
    print()
for a1 in range (n,0,-1):
    for a2 in range (a1):
        print("*", end="")
    print()
*
**
***
****
*****
****
***
**
*

任何帮助都将不胜感激!

11

由于中间和最大的一排星星有 9 颗星,你应该让n等于 9 颗。你可以打印出一半的钻石,但现在你必须尝试制作一个函数,打印特定数量的空格,然后是特定数量的星星。所以试着用每行中的空格和星星数开发一个模式,

Row1: 4 spaces, 1 star, 4 spaces
Row2: 3 spaces, 3 stars, 3 spaces
Row3: 2 spaces, 5 stars, 2 spaces
Row4: 1 space, 7 stars, 1 space
Row5: 0 spaces, 9 stars, 0 spaces
Row6: 1 space, 7 stars, 1 space
Row7: 2 spaces, 5 stars, 2 spaces
Row8: 3 spaces, 3 stars, 3 spaces
Row9: 4 spaces, 1 star, 4 spaces

那么你能推断出什么呢?从第 1 行到 (n + 1) / 2,随着星数的增加,空格的数量减少。所以从 1 到 5,# of stars= (row number* 2)-1,而# of spaces before stars= 5-row number

从第 (n + 1) / 2 + 1 行到第 9 行,间隔数增加,而星数减少,所以从 6 到 n,# of stars= ((n + 1-row number) * 2)-1,而# of spaces before stars=row number-5。

根据这些信息,您应该能够创建一个看起来像这样的程序,

n = 9
print("Pattern 1")
for a1 in range(1, (n+1)//2 + 1): #from row 1 to 5
    for a2 in range((n+1)//2 - a1):
        print(" ", end = "")
    for a3 in range((a1*2)-1):
        print("*", end = "")
    print()
for a1 in range((n+1)//2 + 1, n + 1): #from row 6 to 9
    for a2 in range(a1 - (n+1)//2):
        print(" ", end = "")
    for a3 in range((n+1 - a1)*2 - 1):
        print("*", end = "")
    print()

请注意,您可以将 n 替换为任何奇数,以创建许多行的完美菱形。

8

这是一个基于高度等于顶部到中间或高度一半的解决方案。例如,高度输入为的 4 (7) 或 5 (9)。此方法将产生奇数实际高度

h = int(input("please enter diamond's height:"))
for i in range(h):
    print(" "*(h-i), "*"*(i*2+1))
for i in range(h-2, -1, -1):
    print(" "*(h-i), "*"*(i*2+1))
# please enter diamond's height:4
#      *
#     ***
#    *****
#   *******
#    *****
#     ***
#      *
#
# 3, 2, 1, 0, 1, 2, 3  space
# 1, 3, 5, 7, 5, 3, 1  star
# please enter diamond's height:5
#       *
#      ***
#     *****
#    *******
#   *********
#    *******
#     *****
#      ***
#       *
#
# 4, 3, 2, 1, 0, 1, 2, 3, 4  space
# 1, 3, 5, 7, 9, 7, 5, 3, 1  star

这是另一个基于高度等于顶部到底部或实际总高度的解决方案。例如,高度在输入为 7 或 9。当用户输入偶数作为高度时,菱形将稍微倾斜。

h = int(input("please enter diamond's height:"))
for i in range(1, h, 2):
    print(" "*(h//2-i//2), "*"*i)
for i in range(h, 0, -2):
    print(" "*(h//2-i//2), "*"*i)
# please enter diamond's height:7
#      *
#     ***
#    *****
#   *******
#    *****
#     ***
#      *
#
# 3, 2, 1, 0, 1, 2, 3  space
# 1, 3, 5, 7, 5, 3, 1  star
#
# please enter diamond's height:9
#       *
#      ***
#     *****
#    *******
#   *********
#    *******
#     *****
#      ***
#       *
#
# 4, 3, 2, 1, 0, 1, 2, 3, 4  space
# 1, 3, 5, 7, 9, 7, 5, 3, 1  star
5

正如 Martin Evans 在他的帖子中指出的:https://stackoverflow.com/a/32613884/4779556钻石图案的可能解决方案可能是:

side = int(input("Please input side length of diamond: "))
for x in list(range(side)) + list(reversed(range(side-1))):
    print('{: <{w1}}{:*<{w2}}'.format('', '', w1=side-x-1, w2=x*2+1))
5

我今天学到了一个非常简单的解决方案,想分享一下。:)

num = 9
for i in range(1, num+1):
  i = i - (num//2 +1)
  if i < 0:
    i = -i
  print(" " * i + "*" * (num - i*2) + " "*i)

逻辑如下:
(此处空格表示为“0”。)

# i = 1 | new i = 1 - 5 = -4 | * : 9 - 8 = 1 | 0000 + * + 0000
# i = 2 | new i = 2 - 5 = -3 | * : 9 - 6 = 3 | 000 + *** + 000
# i = 3 | new i = 3 - 5 = -2 | * : 9 - 4 = 5 | 00 + ***** + 00
# i = 4 | new i = 4 - 5 = -1 | * : 9 - 2 = 7 | 0 + ******* + 0
# i = 5 | new i = 5 - 5 = 0  | * : 9 - 0 = 9 |    ********* 
# i = 6 | new i = 6 - 5 = 1  | * : 9 - 2 = 7 | 0 + ******* + 0
# i = 7 | new i = 7 - 5 = 2  | * : 9 - 4 = 5 | 00 + ***** + 00
# i = 8 | new i = 8 - 5 = 3  | * : 9 - 6 = 3 | 000 + *** + 000
# i = 9 | new i = 9 - 5 = 4  | * : 9 - 8 = 1 | 0000 + * + 0000

结果如下:

    *    
   ***   
  *****  
 ******* 
*********
 ******* 
  *****  
   ***   
    *    

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(179)
秒应小程序:该模块应包含程序集清单(the module was expected to contain an assembly
上一篇
Crush申孝燮身高:iPad:PNG压缩错误
下一篇

相关推荐

  • python浅拷贝和深拷贝区别、原理与实现

    示例示例Python中的浅拷贝和深拷贝是指在复制对象时,复制的结果和原来的对象之间的关系。浅拷贝:浅拷贝只复制一层,也就是说,它只复制最外围的对象,而不复制它包含的对象。如果最外围的对象中包含其他对象,那么这些对象将不会被复制,而是使用原来的对象。…

    2023-05-30 14:25:17
    0 66 31
  • python程序员待遇:Python程序员薪酬最高,收入惊人!

    Python程序员的待遇取决于他们的技能水平和工作经验。一般来说,Python程序员的薪资水平较高,尤其是对于那些有丰富工作经验的Python程序员而言,他们的薪资水平更高。此外,Python程序员还可以获得许多其他福利,包括住房补贴、交通补贴、带薪休假等。…

    2023-06-22 01:21:15
    0 10 33
  • python文本情感分析(含代码示例)

    Python文本情感分析是一种使用自然语言处理技术来分析文本中的情感倾向的过程。它可以帮助我们了解用户对特定主题的看法,从而改善产品和服务。…

    2023-04-23 00:28:07
    0 49 48
  • python字符串拼接数字从零开始

    实例实例Python字符串拼接数字,可以使用format()函数或者%运算符来实现。代码实例:…

    2023-08-20 08:25:28
    0 43 92
  • python中import re:如何使用Python中的re模块进行正则表达式匹配

    import re 是Python中正则表达式模块,可以用来处理字符串。它提供了一系列的函数,可以用来查找、替换和分割字符串,以及检查字符串是否符合特定的格式。…

    2023-05-02 10:25:33
    0 93 20
  • python是面向Python的优势

    Python是一种面向对象的编程语言,它提供了一种简单而强大的方法来创建可重用的代码。它使用类和对象来实现面向对象编程,允许程序员将代码封装在类中,以便在不同的程序中重复使用。…

    2023-05-02 04:34:35
    0 40 60
  • python程序包:如何使用Python程序包构建高效的应用程序

    Python程序包是一种用于组织Python模块的形式,它允许程序员将相关的模块组合在一起,以便更轻松地管理和使用它们。Python程序包可以包含函数、类、变量和其他Python代码,以帮助简化程序的开发。…

    2024-03-20 06:08:18
    0 25 61
  • python中的%d:%d个原因你应该学习Python

    示例示例%d 是Python中格式化字符串的占位符,表示用整数来填充。示例:…

    2023-04-25 12:42:58
    0 54 39

发表评论

登录 后才能评论

评论列表(11条)