Python 上下循环以打印“-&引用;及*&引用;

Python 上下循环以打印“-&引用;及*&引用;,python,Python,图案的第一行有5条破折号和1颗星,第二行有4条破折号和3颗星,第三行有3条破折号和5颗星,以此类推。图案的最后一行有0条破折号和11颗星。 我正试图打印出以下结果。我不知道应该对我的代码做什么更改 -----* ----*** ---***** --******* -********* *********** def printing(dash, star): for i in dash: print("-") for i in star:

图案的第一行有5条破折号和1颗星,第二行有4条破折号和3颗星,第三行有3条破折号和5颗星,以此类推。图案的最后一行有0条破折号和11颗星。
我正试图打印出以下结果。我不知道应该对我的代码做什么更改

-----* 
----*** 
---***** 
--******* 
-********* 
***********

def printing(dash, star):
    for i in dash:
        print("-")
    for i in star:
        print("*")          
    print(dash, star)

def main():    
    dash = 5
    star = 1      
    while dash >=0:
        printing(dash, star)
        dash = dash-1
        star = star+2
main()

您似乎想要为xrange(破折号)中的i设置

不能遍历int,需要使用
range()

试试这个:

def printing(dash, star):
    for i in range(dash):
        print("-", end="")
    for i in range(star):
        print("*", end="")          
    print()

def main():    
    dash = 5
    star = 1      
    while dash >=0:
        printing(dash, star)
        dash = dash-1
        star = star+2
main()
输出:

-----*
----***
---*****
--*******
-*********
***********
你的代码怎么了
对于破折号中的i:
将尝试迭代iterable
破折号中的每个元素
i
。但是你给了它一个整数,它是不可数的

要使其正常工作,您应该对范围内的i执行
(破折号)
<代码>范围(n)
返回以0开头的n个整数的列表。这样您就可以迭代
dash

更容易的方法 鉴于python允许您将字符串乘以整数,有效地重复上述字符串,并通过使用
+
简单地添加字符串来链接它们,因此您可以使用一种更简单的方法:

def printing(dash, star):
    print '-'*dash + '*'*star

正如@wRAR所提到的,您应该对xrange(破折号)中的i使用
。另一件事是,您应该正确地使用print来控制换行符,
\n

在Python 3.X中:

def printing(dash, star):
    for i in dash:
        print('-', end='')
    for i in star:
        print('*', end='') 
    print ('')
在Python 2.x中:

def printing(dash, star):
    for i in dash:
        print '-',
    for i in star:
        print '*', 
    print ''

使用Python的字符串重复和连接运算符来构建行可能比使用循环单独打印每个字符更容易。如果将字符串乘以整数,它将重复该次数。添加两个字符串将它们连接起来

下面是一个简单的函数,用于生成所需的输出:

def main():
    for dashes in range(5, -1, -1):    # dashes counts down from 5 to zero
        stars = 1 + 2*(5 - dashes)     # the number of stars is derived from dashes
        print("-"*dashes + "*"*stars)  # just one call to print per line

您可能对一种新算法感兴趣。试试这个

s="-----*"
print(s)
while "-" in s:
    s=s.replace("-*", "***")
    print(s)

您会注意到s行中的“-”。这只是检查字符串中是否有连字符。您可以这样做,因为字符串的行为类似于迭代器。您可以在其中添加任意数量的连字符。

这就是我喜欢这种语言的原因。请问end=''和print('')的作用是什么?@dfefefeff作为第一部分。第二种方法是打印一个空字符串(开始一行)Ok。它不是
,而是两个单引号
。end=“”是什么意思?为什么最后会有print()?一个简单的
print()
会创建一个你不想要的换行符。通常可以使用
print(),
来避免这种情况。
end=”“
也避免使用换行符。行完成后,应该有换行符,这就是为什么会出现空的
print()
。请尝试自己完成此基本赋值:)