【发布时间】:2019-03-11 21:30:54
【问题描述】:
我正在尝试使用旧的三角形练习(目前只需要一个奇怪的输入)来磨练我的 Python 3(特别是嵌套循环)。但是,我遇到了一个无法解决的问题。
user_input = 7
x = 1
temp = user_input
spaces = " "
stars = ""
y = temp - 2
t = 0
while x < temp:
while y > t:
stars = "*" * x
spaces = spaces * y
print(spaces + stars)
spaces= " "
y -= 1
x += 2
我有一个user_input(现在是 7,所以我不必每次运行时都输入)。
用于while 循环的变量x 和t
另一个包含我的user_input 的temporary 变量(以防我将其递减以不“损坏”原始变量)。
一个变量spaces 和另一个变量stars(这应该是自我解释的,因为我正在尝试根据星号绘制一个三角形)。
我有一个变量y,它等于temp - 2
7 的预期输出应该是这样的:
*
***
*****
*******
我之所以让y 等于temp - 2 是因为第一行的空格等于user_input - 2。
假设我们的输入是 7,第一行的空格数是 5。
如果我们的输入是 9,那么第一行的空格数是 7
第一个 while 循环将从 1 循环到 7 (1, 3 , 5, 7),这就是为什么我使 x 等于 1。
第二个while 循环应该从input - 2 循环到0。
奇怪的是,如果我的 user_input 等于 5,它会输出我预期的结果。
*
***
*****
但是一旦我输入类似7 的内容,它会构建一个从 1 到 9 (1, 3, 5, 7, 9) 的三角形
*
***
*****
*******
*********
但我希望它在最后一行之前结束,它应该输出与我的输入一样多的星号。
我的思维过程错了吗?如果是这样,我到底哪里错了?
我希望我已经尽可能地澄清了一切。
非常感谢。
【问题讨论】:
-
您的输入 (
user_input) 是否保证始终为奇数?如果不是,如果是偶数会发生什么? -
@G_M 是的。这个程序只能接受奇数输入(目前)我计划将我的程序扩大到接受偶数输入,一旦我现在完成了奇数部分。我认为我应该首先将问题拆分为“子问题”:)
标签: python python-3.x loops while-loop