我正在图书馆学习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!")
答案 0 :(得分:0)
我认为您最主要的误解是因为for循环。
当在y中对x进行a运算时,它将占用y的每个部分并运行for循环的主体,并将y的该部分分配给x。在您的情况下,它是一个范围,因此范围的每个“部分”都是一个数字,该数字正累加该范围的上限。
因此,对于循环n的每个迭代,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")
答案 1 :(得分:0)
完成另一个答案后,用户输入为string
类型,对于任何算术运算或布尔运算,应将其转换为integer
:
n = input ("Enter a number between 2 and 10: ")
if n == "stop":
print("No starts!")
elif 2 <= int(n) <=10:
for x in range (1, int(n)):
print (x * "*")
else:
print("Number is out or range")
答案 2 :(得分:0)
您将输入作为字符串并将其存储在n中。然后,再次将n用作for循环中的整数迭代器。因此,将“ n”更改为for循环中的其他内容。
范围也是硬编码的:第一个参数是起始值,第二个参数是终止值。因此,在代码中使用变量将是range(1,n)
str_n = input("Enter a number between 2 and 10: ")
n = int(str_n) # See NOTE, but basically takes the string and turns into an int
for i in range(1, n+1): # have to store loop iterator in new variable
print(i * "*")
替换
n = input ("Enter a number between 2 and 10: ") # this stores a string in n
for n in range (1, 11): # this overwrites n to an int
print (n * "*")
注意:这是假设(不好的)用户实际上将输入一个整数。如果没有,它将抛出ValueError
关于“停止”上的“没有星星”。 “停止”从何而来?除非用户输入了很多数字,否则就没有时间“命令中断”(不确定Python中的确切术语,但是对于终端来说,请考虑CTRL-C或类似的命令)。但是要在循环结束时实现“无星星”:
print(i * "*")
print("No stars!")
迈出更大的一步,并说您建立了一个列表,其中包含用户输入的长度(因此n = 4)
nList = ['','','','','stop']
for i in range(0, len(nList)-1):
if nList[i] == 'stop':
break
else:
print((i+1) * "*")
必须构建列表,这超出了问题的范围,但这将是基本布局。
答案 3 :(得分:0)
谢谢大家!我考虑了每个人的反馈意见,这是我的最终产品(正如您所提到的,我什至还考虑了ValueError):
n =输入(“输入2到10之间的数字:”)
尝试: 如果n ==“停止”: 打印(“没有星星!”)
elif 2 <= int(n) <=10:
for x in range (1, int (n)+ 1):
print (x * "*")
else:
print ("Number is out of range.")
ValueError除外: 打印(“输入数字!”)
(由于某些原因,第一部分和最后一部分在框中没有正确显示,但是程序确实可以运行。)