小白问题_关于使用python打印出指定的图形问题
有个小白问题,如何使用Python打印出指定个数的三角形图案,如下题目:打出13579个*组成下列图形,下列三角形一共有n行 ,每行*号个数为1+3+5+7+9+……+n=13579 整个三角形一共有13579个*号组成 每下一行比上一行多两个心(等差数列)。第n行的第一个*号前不考虑空格问题(没有空格)
1 *
2 ***
3 *****
4 *******
.
.
.
n ******.......******
用循环语句(迭代或递归中的一个,具体哪个不清楚,应该是迭代) weiter 发表于 2020-4-25 08:06
用循环语句(迭代或递归中的一个,具体哪个不清楚,应该是迭代)
weiter 大侠。可不可以帮忙演示一下具体的代码呀。不胜感激 Sky_Fall 发表于 2020-4-25 09:08
weiter 大侠。可不可以帮忙演示一下具体的代码呀。不胜感激
我也新手……刚刚自己搞了下……半天没搞对(字数总是对不上),而且效率低的一批……
如果你真的要——
这个字数还是不对……字数比要求的多
a = ("*")
b = 0
c = ("**")
d = 1
while d <= 13579 :
print(a + b * c)
b = b + 1
d = d + 2 * b
weiter 发表于 2020-4-25 09:10
我也新手……刚刚自己搞了下……半天没搞对(字数总是对不上),而且效率低的一批……
如果你真的要— ...
恩,你的思路还可以, 我研究了半天{:5_104:} 发现败在数学上了,还有就是关于*号的定位问题,第一排的* 应该是介于最后一排的*号总数的一半的位置才是中间位置。可是最后一排有都少个*呢? Sky_Fall 发表于 2020-4-25 09:33
恩,你的思路还可以, 我研究了半天 发现败在数学上了,还有就是关于*号的定位问题, ...
所以就我没打印空格……(我用字数统计看了下,我那个的打印出来其实是超过要求的,目前没有搞定) Sky_Fall 发表于 2020-4-25 09:33
恩,你的思路还可以, 我研究了半天 发现败在数学上了,还有就是关于*号的定位问题, ...
我去算一下 weiter 发表于 2020-4-25 09:36
我去算一下
{:5_110:}{:5_110:} 共勉之,多多交流 有没有什么可以计算字符数的代码? Sky_Fall 发表于 2020-4-25 09:45
共勉之,多多交流
一起加油!{:10_265:} Sky_Fall 发表于 2020-4-25 09:45
共勉之,多多交流
我已经乱了,可能字数是对上了,但是我改完之后加上了一段测试代码和一个输入,你试一下a = ("*")
b = 0
c = ("**")
d = 1
f = int(input("what number do you want ?"))
while d < f:
e = (a + b * c)
print(e)
d = len(e)
b = b + 1
print(d)
weiter 发表于 2020-4-25 09:55
我已经乱了,可能字数是对上了,但是我改完之后加上了一段测试代码和一个输入,你试一下
{:5_110:}我看看 Sky_Fall 发表于 2020-4-25 10:02
我看看
错误在哪很明显了……但是怎么改是个问题(我还要赶作业,先告退了……一天写两天的作业量) weiter 发表于 2020-4-25 10:14
错误在哪很明显了……但是怎么改是个问题(我还要赶作业,先告退了……一天写两天的作业量)
恩,再交流啦。 {:5_110:}{:5_110:} 13579数字不对,这个数学运算其实很简单,星星总数就是行数的平方,最接近的是116行,116**2=13456,到了117行总数13689,超了,另外如楼上所说,这个在很多电脑上看不到打印效果,超出了大部分显示器的显示范围,就会自动折行,不过如果4K的显示器就可以完整显示。如果一定按题目做,最后一行就只能打印不完整的星星。
total=int(input('请输入星星总数:'))
n=int(total**0.5//1) #获取最接近的行数
last=total-n**2 #获取最后一行的星星数
for i in range(1,n+1):
if last!=0: #如果需要打印最后一行,每行必须多留一个空格
print(' ',end='')
print(' '*(n-i),'*'*(i*2-1),sep='')
print('*'*last) #打印最后一行
txxcat 发表于 2020-4-25 11:31
13579数字不对,这个数学运算其实很简单,星星总数就是行数的平方,最接近的是116行,116**2=13456,到了11 ...
多谢指教了,我研究研究{:5_110:}{:5_110:}{:5_110:} txxcat 发表于 2020-4-25 11:31
13579数字不对,这个数学运算其实很简单,星星总数就是行数的平方,最接近的是116行,116**2=13456,到了11 ...
大侠,我看了一下,也试着尝试运行了一下程序,在程序第6行,print(‘ ’,end")位于end后面的引号有报错呢。请教一下这里的end起什么作用呢? Sky_Fall 发表于 2020-4-26 08:23
大侠,我看了一下,也试着尝试运行了一下程序,在程序第6行,print(‘ ’,end")位于end后面的引号有报 ...
是end='',print的参数,这是在打印完后附加打印的东西,默认是'\n',就是换行,end=''的意思就是打印完后不做任何动作,光标停在行尾。 txxcat 发表于 2020-4-26 09:52
是end='',print的参数,这是在打印完后附加打印的东西,默认是'\n',就是换行,end=''的意思就是打印完 ...
明白了,多谢分享,我研究研究
页:
[1]