鱼C论坛

 找回密码
 立即注册
查看: 2243|回复: 2

[已解决]python问题

[复制链接]
发表于 2023-11-5 15:07:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. class AnonymousSurvey():
  2.     def __init__(self,question):
  3.         self.question = question
  4.         self.responses = []

  5.     def show_question(self):
  6.         print(self.question)

  7.     def store_response(self,new_responsse):
  8.         self.responses.append(new_response)

  9.     def show_results(self):
  10.         print('Survey results:')
  11.         for response in self.responses:
  12.             print('- '+response)

复制代码


  1. from survey import AnonymousSurvey

  2. question = 'What language did you first learn to speak?'
  3. my_survey = AnonymousSurvey(question)

  4. my_survey.show_question()
  5. print("Enter 'q' at any time to quit.\n")
  6. while True:
  7.     response = input('Language:')
  8.     if response == 'q':
  9.         break
  10.     my_survey.store_response(response)

  11. print('\nThank you to everyone who participated in the survey!')
  12. my_survey.show_results()
复制代码


  1. What language did you first learn to speak?
  2. Enter 'q' at any time to quit.

  3. Language:w
  4. Traceback (most recent call last):
  5.   File "D:/python文件/学习/十一、测试代码/11.2kh/11.2kh.py", line 12, in <module>
  6.     my_survey.store_response(response)
  7.   File "D:/python文件/学习/十一、测试代码/11.2kh\survey.py", line 10, in store_response
  8.     self.responses.append(new_response)
  9. NameError: name 'new_response' is not defined
  10. >>>
复制代码

这个问题,是不是我类的方法建的有问题啊,求教
最佳答案
2023-11-5 15:07:40
是的,你的类方法 store_response 中有一个拼写错误。在方法参数中,你使用了 new_responsse 而不是 new_response 。因此,在方法体中,Python无法找到名为 new_response 的变量,从而导致了 NameError 错误。

要解决这个问题,你只需将 new_responsse 改为 new_response 即可。修改后的代码如下:

  1. class AnonymousSurvey():
  2.     def __init__(self, question):
  3.         self.question = question
  4.         self.responses = []

  5.     def show_question(self):
  6.         print(self.question)

  7.     def store_response(self, new_response):
  8.         self.responses.append(new_response)

  9.     def show_results(self):
  10.         print('Survey results:')
  11.         for response in self.responses:
  12.             print('- ' + response)
复制代码


请注意,你还需要在代码的开头导入 AnonymousSurvey 类:

  1. from survey import AnonymousSurvey
复制代码


现在,你应该能够正确地运行代码并存储用户的回答了。希望能对你有所帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-5 15:07:40 | 显示全部楼层    本楼为最佳答案   
是的,你的类方法 store_response 中有一个拼写错误。在方法参数中,你使用了 new_responsse 而不是 new_response 。因此,在方法体中,Python无法找到名为 new_response 的变量,从而导致了 NameError 错误。

要解决这个问题,你只需将 new_responsse 改为 new_response 即可。修改后的代码如下:

  1. class AnonymousSurvey():
  2.     def __init__(self, question):
  3.         self.question = question
  4.         self.responses = []

  5.     def show_question(self):
  6.         print(self.question)

  7.     def store_response(self, new_response):
  8.         self.responses.append(new_response)

  9.     def show_results(self):
  10.         print('Survey results:')
  11.         for response in self.responses:
  12.             print('- ' + response)
复制代码


请注意,你还需要在代码的开头导入 AnonymousSurvey 类:

  1. from survey import AnonymousSurvey
复制代码


现在,你应该能够正确地运行代码并存储用户的回答了。希望能对你有所帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-5 15:08:20 | 显示全部楼层
问题分析:

这个错误提示是说new_response未定义,但是我们看代码,确实定义了response变量,没有定义new_response变量,因此会有这个错误。

解决方案:

store_response函数的参数名改为new_response即可。修改后的代码如下:
  1. class AnonymousSurvey():
  2.     def __init__(self, question):
  3.         self.question = question
  4.         self.responses = []
  5.     def show_question(self):
  6.         print(self.question)
  7.     def store_response(self, new_response):
  8.         self.responses.append(new_response)
  9.     def show_results(self):
  10.         print('Survey results:')
  11.         for response in self.responses:
  12.             print('- ' + response)
复制代码

在主程序中,也需要将my_survey.store_response(response)改为my_survey.store_response(new_response)

完整代码如下:
  1. from survey import AnonymousSurvey
  2. question = 'What language did you first learn to speak?'
  3. my_survey = AnonymousSurvey(question)
  4. my_survey.show_question()
  5. print("Enter 'q' at any time to quit.\n")
  6. while True:
  7.     new_response = input('Language:')
  8.     if new_response == 'q':
  9.         break
  10.     my_survey.store_response(new_response)
  11. print('\nThank you to everyone who participated in the survey!')
  12. my_survey.show_results()
复制代码

希望对你有所帮助。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 17:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表