使用while循环作为函数

时间:2016-02-28 01:19:30

标签: python-3.x

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

这就是我拥有的东西,它只在我退出循环后才起作用,我不知道如何解决它。

    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)

3 个答案:

答案 0 :(得分:0)

查找python的break语句。

答案 1 :(得分:0)

循环内部您只调用<template> <h3> Hello, <content select='#prefix'></content> <content select='#name'></content>! </h3> </template> <button id='register'>Register custom-hello</button> <div> custom-hello: <custom-hello> <span id="prefix">Miss</span> <span id="name">Kat</span> <span id="age">30</span> </custom-hello> </div>分配Function1()然后循环重新开始。所以现在只有当你已经离开循环时才会执行nStars=num。在调用Function2()后在循环内添加break,因为在获得有效输入后,您不想再次启动循环。

答案 2 :(得分: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)