【问题标题】:Python while loop does not continuePython while循环不继续
【发布时间】:2016-04-25 22:25:00
【问题描述】:

程序应在回答“您要继续(Y/N)吗?”时不断要求用户输入标题和评论。是 Y。相反,它只询问用户一次。有人可以帮我弄清楚循环不继续吗?谢谢!

#!/usr/bin/env python

def main():

 listOfReviews = obtainListOfReviews()
 displayResults(listOfReviews)

def obtainListOfReviews():
 listOfReviews = []
 carryOn ='Y'
 while carryOn =='Y':
  title = raw_input("Enter title:")
  review = int(input("Enter review:"))

  st = MovieReview(title, review)
  listOfReviews.append(st)
  carryOn = raw_input("Do you want to continue?(Y/N)? ")
  carryOn = carryOn.upper()
  return listOfReviews

def displayResults(listOfReviews):
     for r in listOfReviews:
         print(r)

class MovieReview:
 def __init__(self, title = " ", review = 0):
  self._title = title
  self._review = review
 def setTitle(self, title):
  self._title = title
 def setReview(self, review):
  self._review = review
 def getTitle(self):
  return self._title
 def getReview(self):
  return self._review
 def __str__(self):
  return ("Title: " + str(self._title) + " \nreview: " + str(self._review))
main()

【问题讨论】:

  • 因为你在while循环中有return
  • 您的returnwhile 循环的一部分。取消缩进。
  • return listOfReviews 导致函数obtainListOfReviews() 返回存储在listOfReviews 中的值,以分配给main() 中的变量listOfReviews
  • 如果你使用了合适的缩进级别,而不是单个空格,问题可能会更明显。

标签: python linux ubuntu while-loop pycharm


【解决方案1】:

“return listOfReviews”行的缩进错误:

def obtainListOfReviews():
 listOfReviews = []
 carryOn ='Y'
 while carryOn =='Y':
  title = raw_input("Enter title:")
  review = int(input("Enter review:"))

  st = MovieReview(title, review)
  listOfReviews.append(st)
  carryOn = raw_input("Do you want to continue?(Y/N)? ")
  carryOn = carryOn.upper()

 # Correct indentation
 return listOfReviews

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 2015-04-16
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2019-02-26
    • 2020-06-09
    相关资源
    最近更新 更多