我的屁股
在每个级别,前一级别的完整三角形被放置在一个额外的外三角形中。应该要求用户输入要使用的两个字符和最里面的三角形的宽度,该宽度必须是奇数。除了负输入测试之外,该函数还应测试所提供的数字是否为奇数,如果不是,则显示相应的消息。
我需要打印3个三角形,但每个三角形都包含其他三角形。它需要打印两个不同的字符(如* - ),用户必须指定最里面的三角形的长度,并且必须是奇数。例如,
好的,让我解释一下,
每个三角形都应该在字典中。
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]))
答案 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])