首页 > 解决方案 > 使用 for 循环输出与星号相同数量的行

问题描述

我正在图书馆学习 Python 课程,我是编码的初学者,但我在完成这项作业时遇到了麻烦。使用 for 循环,它要求我们“编写一个读取 n 的程序,其中 n 是从 2 到 10 的数字。程序应该输出 n 行星号,其中星号的数量等于行号。 " 此外,如果 n = "stop",它应该打印 "No stars!"

例如,其中 n = 4:

*
**
***
****

我知道如何征求意见。我可以让它打印星号。我只是不知道如何制作它,以便它只打印用户输入的行数和星号。我希望我描述得很好。我也不能让它打印“没有星星!” 如果我输入“停止”。

n = input ("Enter a number between 2 and 10: ")

for n in range (1, 11):
    print (n * "*")

if n == "stop":
    print ("No stars!")

标签: python-3.x

解决方案


我认为您遇到的主要误解是 for 循环。

当您在 y 中执行 for x 时,它将获取 y 的每个部分并运行 for 循环的主体,并将 y 的该部分分配给 x。在您的情况下,它是一个范围,因此范围的每个“部分”都是一个数字,它正在计算范围的上限。

因此,对于循环 n = 1 的每次迭代,运行主体,n = 2,运行主体,......等等。

所以要解决这个问题,使范围的上限等于 n+1。

n = input ("Enter a number between 2 and 10: ")

if n == "stop":
    print("No starts!")
try:
    n = int(n)
    if n>=2 and n<=10:
        for x in range (1, n+1):
            print (x * "*")

except:
    print("invalid input")

推荐阅读