【问题标题】:NoneType error with get_string in pythonpython中get_string的NoneType错误
【发布时间】:2017-12-08 05:01:37
【问题描述】:

我目前正在使用 sublime text 3。我正在尝试提示用户输入字符串,检查字符串长度并存储该字符串,但是在尝试时遇到“NoneType 错误”。目前看起来是这样的。

from cs50 import get_string

while True:
            name_input = get_string("Welcome to Ocorn, a text-based RPG.\nChoose a name between 1 and 10 characters: ")
            if len(name_input) <= 10 and len(name_input) >= 1:
                break

player.name = name_input

【问题讨论】:

  • player 被分配到其他地方了吗?
  • 是的,它被定义为一个函数,但这不是问题。
  • “它被定义为一个函数”听起来确实可能是问题所在。你是什​​么意思?播放器是函数吗?还是在函数内部定义?在这两种情况下,这都行不通。我敢打赌,你在这个范围内定义了类似player=None 的东西,然后通过player=Player() 但在一个函数内为玩家分配了一些东西。请注意,这不起作用,因为第二次分配是在函数范围内完成的,并且在返回时会丢失。
  • 没关系,因为当我删除该变量时,仍然会引发错误。在 "if len(name_input) = 1:"

标签: python string nonetype getstring


【解决方案1】:

get_string 属于 cs50 库,因此如果您尝试在不导入库的情况下进行操作,它将无法正常工作。

包含库或函数的语法是使用import,我们是从CS50 IDE中预装的cs50库中导入get_string。

https://docs.cs50.net/2017/fall/notes/8/lecture8.html

如果您在 ubuntu 中,您可以执行以下操作

  1. 下载python3 $ sudo apt install python3
  2. 下载python3-pip $ sudo apt install python3-pip
  3. 下载cs50库 $ sudo pip install cs50
  4. 在.py文件中导入需要的方法 一个示例 hello.py 文件
from cs50 import get_string

answer = get_string( "What is your name?\n")
print( "hello, " + answer)

【讨论】:

  • 这不能回答问题。 OP 表明他们知道如何使用import。问题是 get_string 方法的行为不像他们认为的那样(即它会导致 NoneType 错误)。
猜你喜欢
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
相关资源
最近更新 更多