python,unix,NameError:名称未定义。无法识别字符串变量

时间:2019-02-08 20:44:09

标签: python string bash unix python-2.x

我最近开始学习在bash / unix中工作……我还是很新。

我对python有经验。在过去的4年中一直使用该语言进行网络工程和数据分析。

现在我们正在做这个虚拟环境的事情,而我在将它包裹起来时遇到了一些麻烦。

当前,我将以下代码存储在当前工作目录中的helloWorld.py文件中。

#! /usr/bin/env python
def hello():
    name = str(input('\n\nHello, what is your name? \n'))
    print('\nHello World')
    print('But more importantly... \nHello ' + name)
    return

hello()

所以。我的问题是。当我在外壳中运行代码时,得到以下信息:

[currentDirectory]$ python helloWorld.py


    Hello, what is your name?
    randomname <-- typed by user.

Traceback (most recent call last):
  File "helloWorld.py", line 8, in <module>
    hello()
  File "helloWorld.py", line 3, in hello
    name = str(input('\n\nHello, what is your name? \n'))
  File "<string>", line 1, in <module>
NameError: name 'randomname' is not defined

似乎无法识别该变量是字符串。 代码在bash shell之外的IDE中运行良好。相当基本的代码。 但是,这种虚拟环境linux / unix / shell / bash超级新。 就这样,实际上是第一天。我已经能够创建和保存文件并更改目录。这是我在外壳中编写python的第一个测试,我立即遇到障碍。 抱歉,这个问题可能很简单。 感谢您的帮助。

顺便说一句: 如果用户在输入的内容两边加上引号,则此方法有效。但这违反了在函数的输入行周围使用str()转换器的目的。 我怎样才能使用户可以输入任何内容?

1 个答案:

答案 0 :(得分:1)

  

在Python 2中,raw_input()返回一个字符串,input()尝试运行   输入为Python表达式。

尝试一下:

#! /usr/bin/env python

def hello():
    name = raw_input('\n\nHello, what is your name? \n')
    print('\nHello World')
    print('But more importantly... \nHello ' + name)
    return

hello()