Python中的嵌套三角形

时间:2017-11-13 13:50:17

标签: python python-3.x nested-loops

我的屁股

  

在每个级别,前一级别的完整三角形被放置在一个额外的外三角形中。应该要求用户输入要使用的两个字符和最里面的三角形的宽度,该宽度必须是奇数。除了负输入测试之外,该函数还应测试所提供的数字是否为奇数,如果不是,则显示相应的消息。

我需要打印3个三角形,但每个三角形都包含其他三角形。它需要打印两个不同的字符(如* - ),用户必须指定最里面的三角形的长度,并且必须是奇数。例如,

Example output for 5 value

好的,让我解释一下,

每个三角形都应该在字典中。

tri1 = {1:"*****", 2:"***", 3:"*"}
tri2 = {1:"..........", ...}

无法找到我如何处理用户输入?

如果输入5,

长度 - 5个单位,高度3个单位

长度 - 11个单位,高度6个单位

长度 - 23个单位,高度12个单位。

我怎么知道?逻辑是什么?

好的,如果我这样做的话。我明白我应该在另一个带有嵌套循环的三角形中加入一个tringle,可以简单地迭代另一个字典但是,我需要检查第二个字符的位置。

提前致谢。

我的代码,

    ch1, ch2 = input("Please enter the characters you want to use: ")

num = int(input("Please specify the length of innermost triangle(only odd number): "))

if (num % 2 == 0) or (num < 3):
  print("Number can not be even, less then 3 and negative")

num2 = (2 * num) + 1
num3 = (2 * num2) +1
tri1 = {}
tri2 = {}
tri3 = {}

for i in range(3):
  tri1[i] = ch1*num
  num -= 2


check = 1
cont = 0
var = 1
for ii in range(6):
  tri2[ii] = ch2*check
  check += 2
  if (ii >= 3):
    tri2[ii] = ch2*var + tri1[cont] + ch2*var
    cont += 1
    var += 2

for i in tri1:
  print('{:^5}'.format(tri1[i]))

for i in tri2:
  print('{:^11}'.format(tri2[i]))

1 个答案:

答案 0 :(得分:0)

可以使用简单的函数创建字典:

def create_tri_dict(tri_chars, tri_height):
    level_str = {0:tri_chars[0]}

    for i in range(1,tri_height):
        level_length = i *2 +1
        tri_char = tri_chars[i%2]
        level_str[i] = level_str[i-1] + '\n' + tri_char * level_length
    return level_str

然后你的程序的主要逻辑可能是:

tri_chars = input('Input triangle characters: ')
tri_length = int(input('Input triangle base length: '))
tri_height = (tri_length + 1)//2
if tri_length %2 == 0:
    raise Exception('Triangle base length not odd')
tri_dict = create_tri_dict(tri_chars, tri_length)

然后打印最后的3个(?)三角形:

print(tri_dict[tri_height-2])
print(tri_dict[tri_height-1])
print(tri_dict[tri_height])