2016-02-28 113 views
-1

好吧,我有一个难倒我的难题。创建一个程序在函数中使用while循环来请求范围(0-30)中的值在负值上退出。
将范围内的所述值传递给一个函数,该函数将该数量的星号分配给变量(nStars)。 将值返回给字符串分配给StarsOut的调用程序。 最后将变量StarsOut传递给打印字符串的第三个函数。使用while循环作为函数

这是我有什么,它只是后发挥我退出循环,我不知道如何解决它的ATM。

def Function1(num): 
     global nStars 
     nStars=num 
    def Function2(Stars): 
     global nStarsOut 
     nStarsOut=nStars 
    def Function3(final): 
     for r in range(final): 
      print("*") 
    def Loop(): 
     Number=1 
     while Number!=-999: 
      Number=int(input("Enter an integer between 0 and 30(-999 to exit): ")) 
      if 0<=Number<=30: 
       Function1(Number) 
      if Number<0 or Number>30: 
       print("invalid") 

    Loop() 
    Function2(nStars) 
    Function3(nStarsOut) 
+0

也atm ot永远不会将原始值转换为它想要做的字符串,因为我不确定如何让它做到这一点,并且以后仍然有一个可用值 – shadow

+0

因此,根据我的理解,要打印'* '在用户输入一个输入而不退出循环之后? – dvenkatsagar

回答

0

查询python的break声明。

+0

哇那么简单?令人惊讶的是,它像它假设的那样运行。现在,只要它是容易使第一功能做了该做的“通行证表示,范围值到串接在一起号星号将其分配给一个变量的函数(nStars)” – shadow

+0

'nStars = NUM​​ *' *'' –

+0

你们让事情变得如此简单,我花了几个小时才得到我只有部分工作的东西 – shadow

0

在循环内您只呼叫Function1(),它指定nStars=num然后循环再次开始。所以现在Function2()只有当你已经离开循环时才会执行。在呼叫Function1()之后,在循环内部添加break,因为您不希望在获得有效输入后再次启动循环。

0

如果你要打印*权的用户给出了输入而不退出循环之后。我想,你不需要在首位的功能,你可以做这样的事情:

def Loop(): 
    Number=1 
    while Number!=-999: 
     Number=int(input("Enter an integer between 0 and 30(-999 to exit): ")) 
     if 0<=Number<=30: 
      for r in range(Number): 
      print("*") 
     if Number<0 or Number>30: 
      print("invalid") 

那么你甚至可以跳过不必要的功能,在我看来。

更新:

但是,如果你想采取的输入,然后生成许多*,并将其保存起来,之后您打印一次全部退出循环,你可以做这样的:

def Function1(num): 
    global nStars 
    nStars=nStars + num*'*' 
def Function2(t): 
    print(t) 
def Loop(): 
    Number=1 
    while True: 
    Number=int(input("Enter an integer between 0 and 30(negative values to exit): ")) 
    if 0<=Number<=30: 
     Function1(Number) 
    if Number<0: 
     break 
    if Number > 30: 
     print("invalid") 
nStars = '' 
Loop() 
Function2(nStars) 
+0

我很想跳过它会作出简单的功能,但他们希望建立使用功能,所以我有我的表走的路 – shadow

+0

你们是不是一个偶然的机会做到这一点,喜欢收集的输入和产生在每个输入上有许多'*'并将它们添加到一个字符串中,然后一次全部打印出来? – dvenkatsagar