【问题标题】:Input wont accept anything except numbers输入不会接受除数字以外的任何内容
【发布时间】:2019-08-31 04:25:19
【问题描述】:

输入函数只接受整数作为输入,否则当我在 python 3 中使用 REPL 运行时收到此错误消息:

Entry:
b
Traceback (most recent call last):
  File "Ex7.5.py", line 1, in <module>
    a = input("Entry:\n")
  File "<string>", line 1, in <module>
NameError: name 'b' is not defined

需要我的代码同时接受字母和数字作为输入,但不明白为什么不将 b 作为字符串并打印出来?

实际上只是试图让这个打印输入功能当前工作,然后在其他功能中使用。

如果我只用整数运行相同的代码,它就没有问题。

a = input("Entry:\n")
print(a)
print(type(a))

我期待的答案是 b。

【问题讨论】:

  • 您的代码似乎没有任何问题,当我在这里运行它时,它具有您预期的行为。你用的是哪个版本的python?您可以通过命令python --version 看到这一点。
  • 我在 Sublime 中使用 python 3,但如果我将它输入到终端 (mac) 我得到 python 2.7? raw_input 我也尝试过,但也没有用(想象一下,因为 Sublime 正在运行 Python 3)
  • 如果你以python3 Ex7.5.py运行它是否有效?
  • /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python:无法打开文件“Ex7.5.py”:[Errno 2]没有这样的文件或目录是错误信息吗?
  • 因此,您在问题中描述的错误与您在 Python 2 而不是 Python 3 中运行代码这一事实有关。您在 cmets 中的另一个异常是关于未正确运行程序当您尝试显式使用 Python 3 时。

标签: python-3.x


【解决方案1】:

发生此错误是因为您在 Python 2 中运行代码,而不是 Python 3。Python 2 中的input() 将评估您给它的内容,在这种情况下作为不存在的变量名;而 Python 3 中的 input() 会将其保留为字符串。更多详情见What's the difference between raw_input() and input() in python3.x?

如何使用正确的 Python 版本是另一个问题,但到目前为止,您似乎在 cmets 方面取得了一些进展。

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 2018-11-13
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多