【问题标题】:Python 2.7.5, using a loop within a function and calling the functionPython 2.7.5,在函数中使用循环并调用函数
【发布时间】:2023-03-23 19:50:02
【问题描述】:

我似乎无法多次显示用户输入。例如,如果输入是

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()

【问题讨论】:

  • 您的预期输出是什么,而您得到的是什么输出?您说您在获取名称时遇到问题,但不要说问题是什么。我怀疑问题是当您调用 inamed 时 irepnum while count < irepnum,并将计数初始化为 0)
  • 我的错,我运行代码时出现了无限循环
  • 我能读懂。您将不得不更具描述性。
  • 我希望用户输入的名称显示用户输入数字的次数,所以如果用户输入名称“jeff”和数字“6”我想要“jeff”在屏幕上打印 6 次。很抱歉措辞奇怪。
  • 我也可以读到,我的意思是对您遇到的问题进行更多描述。比如你给了什么输入,你得到什么输出等等。具体一点,不要只说“我有一个无限循环”。无论如何,您的问题似乎已得到解答,但请记住这一点,以备日后提问。

标签: function python-2.7 input while-loop


【解决方案1】:

您需要致电inamed(iname, irepnum),而不是inamed(irepnum, name),就像您现在所做的那样。

除了没有定义name这一明显错误(实际变量称为iname)外,错误的顺序会导致函数中的irepnum被设置为用户输入的字符串作为名称。由于count,无论多大,永远不会与传递的字符串进行比较,代码无限循环。

几个提示:

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

  • 为您的标识符赋予更独特的名称。目前你有一个inamed 函数和一个iname 变量。令人困惑。

  • 不要在 int 足够的地方使用浮点数。滥用浮点数是自找麻烦。

【讨论】:

  • 感谢您的回答,我正在从具有与 python 不同语法的流程图工具中移动所有这些数据,我没有跟踪我的所有变量,但感谢您更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2020-06-16
  • 2014-06-19
  • 2019-09-15
  • 2017-11-24
  • 2022-01-20
  • 2018-09-25
相关资源
最近更新 更多