2016-02-28 118 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