Bash要求我在Python中输入时在字符串周围输入引号来计数。

13 浏览
0 Comments

Bash要求我在Python中输入时在字符串周围输入引号来计数。

在教程中,我读到说inputraw_input之间有区别。我发现它们在Python 3.0中改变了这些函数的行为。新的行为是什么呢?

为什么在Python控制台解释器中这样写

x = input()

会报错,但如果我把它放在一个file.py文件中运行,就不会报错?

0
0 Comments

在Python中,raw_input()函数在2.x版本中返回一个字符串,而input()函数则在调用时对输入进行求值,具体取决于执行上下文。例如,如果输入为字符串,则返回字符串;如果输入为表达式,则返回表达式的结果。

在Python 3.x版本中,input函数已被废弃,而之前被称为raw_input的函数现在被称为input。因此,如果要使用旧的功能,需要手动调用compile函数,然后再调用eval函数。

在3.x版本中,上述会话的代码如下所示:

>>> x = eval(input())
'hello'
>>> y = eval(input())
x + ' world'
>>> y
'hello world'
>>>

因此,你可能在解释器中遇到错误,因为你没有在输入时加上引号。这是必需的,因为输入会被求值。你是否遇到了名称错误?

在上述对话中,输入的代码是这样的:x = input() "hello"(当要求输入时,你在控制台上键入的)。x + "world"。为什么会这样?因为x没有被转换为字符串。

我遇到的错误是:>>> x = input() Traceback (most recent call last): File "<console>", line 1, in <module> EOFError: EOF when reading a line

我展示的解释器部分是针对2.x版本的。我在3.x版本中搞砸了(我几乎没有使用过它),所以我删除了我的答案中的那部分内容。

也许我应该开始学习Python 2.x,我只是想学习具有未来发展性的最新版本。但我不想像这样浪费时间,这是一种浪费,我想我可以找到另一个教程。

这是我的最终答案。在学习过程中,没有什么是浪费时间的。事实证明,我对3.x的理解是正确的,只是我尝试做了一些不同的东西。你为什么认为自己在浪费时间?

我的意思是,我不想学习即将被废弃的东西,比如Python 2.x。我只是想学习最高效的方法。谢谢你的时间,我尝试了你使用的代码,它的效果正常。解释器的问题是,我使用的是Notepad++的Python插件控制台,它会出现一些奇怪的问题,我不想再折腾它了,我将使用默认的控制台。

0
0 Comments

问题的原因是,使用Python的input()函数,在接收输入时,要求字符串必须用引号括起来,否则会被当作变量名或表达式进行处理。这是因为input()函数返回的是一个整数值,而非字符串。

解决方法是,使用raw_input()函数代替input()函数来接收输入。raw_input()函数总是返回一个字符串,而不需要将字符串用引号括起来。这样可以确保输入的内容被当作字符串处理,而不会被当作变量名或表达式。

例如,使用raw_input()函数接收输入时,可以这样写代码:

x = raw_input("Enter some value = ")
print x

上述代码中,当输入123时,输出为'123',即将输入的内容作为字符串输出。

而使用input()函数接收输入时,可以这样写代码:

y = input("Enter some value = ")
print y

上述代码中,当输入123时,输出为123,即将输入的内容作为整数输出。

因此,如果执行x + x,输出为123123,而执行y + y,输出为246。

需要注意的是,上述情况适用于Python 2.x版本,而不适用于Python 3.x版本。在Python 3.x中,input()函数始终返回一个字符串,而raw_input()函数已被删除。

0
0 Comments

在Python中,有两个内置函数可以用于接收用户输入,分别是input()和raw_input()。然而,它们之间存在一些差异和安全性问题。

raw_input()函数会将用户输入的字符收集起来,并将其作为一个字符串进行处理。这意味着,无论用户输入的是什么,都会被当作字符串来对待。

而input()函数则不仅仅是将输入的内容作为字符串,它会尝试对输入进行求值。也就是说,它将会将输入的内容作为Python代码进行执行。这就意味着,如果用户输入的是一个Python命令,那么该命令将会被执行。这对于有经验的恶意用户来说,可能会造成一些安全问题,比如删除文件等。因此,为了避免这种情况的发生,我们应该使用raw_input()函数。

另外需要注意的是,input()函数对于用户的输入也没有安全性保证。它期望输入是一个有效的Python表达式,如果输入不符合Python语法规则,将会引发SyntaxError错误。

解决这个问题的方法是使用raw_input()函数,然后使用Python的内置转换函数将字符串转换为所需的数据类型。这样可以确保用户输入的内容不会被当作Python代码进行执行,从而避免潜在的安全问题。

为了确保安全性和避免潜在的问题,我们应该优先使用raw_input()函数来接收用户输入,并使用适当的转换函数将字符串转换为所需的数据类型。

0