【发布时间】:2013-11-06 01:58:06
【问题描述】:
我正在参加比赛,但不知道如何让 python 接受输入。这是一个典型的 example 。该站点给出了如何获取输入的示例,但这些示例使用的是 C 和 Java (click here)。请帮我弄清楚在这种情况下如何让 python 接受输入。
【问题讨论】:
-
Either of these 在 codechef 上可以正常工作。
我正在参加比赛,但不知道如何让 python 接受输入。这是一个典型的 example 。该站点给出了如何获取输入的示例,但这些示例使用的是 C 和 Java (click here)。请帮我弄清楚在这种情况下如何让 python 接受输入。
【问题讨论】:
有不止一种方法可以做到这一点。
接受解释器的输入
对于 Python 2.x,您可以使用 raw_input() 函数:
my_input = raw_input("Please enter an input: ")
#do something with my_input
请注意,输入始终是字符串。要检索一个数字,您可以使用内置的int() 函数:
my_input = int(raw_input("Please enter an input: "))
#do something with my_input
正如提到的另一个答案,如果输入是浮点数,这将引发错误。
在 Python 2.x 中还有另一个函数 input。然而,在这个版本的 Python 中,input 评估输入,这是一个坏主意。不建议使用。
但是,对于 Python 3.x,您可以毫无问题地使用 input() 函数,因为它可以替代 raw_input:
my_input = input("Please enter an input: ")
#do something with my_input
从命令行参数获取输入
您还可以在执行脚本时从命令行参数中检索输入,如下所示:
$ python my_script.py arg1 arg2
参数将存储在列表sys.argv 中。 sys.argv[0] 是第一个参数,sys.argv[1] 是第二个参数,依此类推。
示例:
import sys
my_input = sys.argv[0]
#do something with my_input
查看详情here 此方法适用于 Python 3.x 和 2.x 两个版本。
希望这会有所帮助!
【讨论】:
获取用户输入的最佳方式是使用raw_input,这会将用户输入作为字符串接收。让我演示一下:
>>> var = raw_input("Enter")
Enter>? happy
>>> var
'happy'
注意happy 上的引号,这表示一个字符串。您可能还注意到,input,是的,可以用于接受用户输入,但这里有一个例子表明这是一个坏主意:
>>> a = 2
>>> input("Enter")
Enter>? a+1
3
这里,input 实际上得到了评估,因为我们已经声明了a、a + 1 == 3,我们将其视为控制台会话中的输出。 这后来变成了一个安全问题(你不希望用户弄乱你的变量),所以对于用户输入,raw_input 是最好的选择。
既然你从raw_input得到了一个string,你可以把它转换成你喜欢的任何东西,如果它可以转换,例如:
>>> var = raw_input("Enter")
Enter>? 122
>>> var = int(var)
>>> var
122
但是,浮点数不适用于int:
>>> int('1.223')
Traceback (most recent call last):
File "<console>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.223'
你需要在这里使用float,然后它就可以工作了:
>>> float('1.223')
1.223
【讨论】:
【讨论】: