2013-11-26 72 views
0

我似乎无法获得多次显示的用户输入。例如,如果输入的是Python 2.7.5,在函数中使用循环并调用函数

Jeff 6 

输出应该

Jeff 
Jeff 
Jeff 
Jeff 
Jeff 
Jeff 

我新的功能在Python,但这里是我的代码至今:

def getName(): 
    name = raw_input("please enter name") 
    return name 

def getRepval(): 
    irepnum = float(raw_input("please enter number to show name entered")) 
    return irepnum 

def inamed(name, irepnum): 
    count = 1 #the loop to show the name entered by the user 
    while irepnum != count: 
     print name 
     count += 1 #do I need to use return?? 

def main(): #having the main func like this gives me an infinite loop 
    irepnum = 0 

    iname = getName() #I think my problem is somewhere here. 

    irepnum = getRepval() 

    inamed(irepnum,name) 

main() 
+0

你的预期产出是什么,你得到的是什么产出?你说你得到这个名字有问题,但不要说出问题所在。我怀疑问题是当你调用inamed时irepnum <1,所以该函数中的循环永远不会结束。对于像这样的循环使用少于条件的做法是很好的做法,以防止可能出现的超出范围的错误,例如使用'while count

+0

我的错,当我有一个无限循环时运行代码 – JuanB457

+0

我可以阅读。你将不得不更具描述性。 –

回答

1

你需要拨打inamed(iname, irepnum),而不是inamed(irepnum, name),因为您现在正在进行此操作。

以外的name没有被定义(实际变量称为iname),以错误的顺序引起irepnum在功能设置为用户输入的姓名字符串的明显错误。由于count,无论多大,永远不会等于传递的字符串,代码无限循环。

几个小窍门:

  • 学习使用for循环和xrange。你想要的成语是for count in xrange(irepnum):。 (使用它可以防止此错误。)

  • 为您的标识符提供更多独特的名称。目前您有一个inamed函数和一个iname变量。混乱。

  • 不要使用漂浮在int就足够。错用花车是在寻求麻烦。

+0

感谢您的答案,我将所有这些数据从具有不同于python的语法的流程图工具中移出,我没有记录所有变量,但感谢您纠正错误。 – JuanB457