我想知道如何使用"用户输入列表"在非交互式环境中编写代码时使用Python?
例如......在字符串的情况下,我们执行以下操作: -
str1=input("Enter the string1: ")
类似地,对于整数,我们在编写代码时键入以下行。
num1=int(input("Enter the number1:"))
类似于复数,我们在编写代码时键入以下行。
c1=complex(input("Enter complex number1: "))
请帮助并提供元组和字典的答案。语法是什么?
答案 0 :(得分:0)
您可以使用ast.literal_eval
安全地评估用户的任何python文字:
import ast
data = ast.literal_eval(input("enter a python literal:"))
print(type(data),data)
这可以让你输入各种各样的东西:
enter a python literal:[1,2,3]
<class 'list'> [1, 2, 3]
enter a python literal:(3,2,1)
<class 'tuple'> (3, 2, 1)
enter a python literal:"hello"
<class 'str'> hello
enter a python literal:3.4
<class 'float'> 3.4
#this one is *extremely* malicious when put in eval()
enter a python literal:open(__file__,"w").close()
Traceback (most recent call last):
...
ValueError: malformed node or string: <_ast.Name object at 0x1056b4f98>
# but ast.literal_eval is safe with user input like this.
尽管你可以用逗号来split
获取一个列表:
data = input("enter some values seperated by ,s: ").split(",")
这会给你一个清单:
enter some values seperated by ,s: 1,2,3
<class 'list'> ['1', '2', '3']
答案 1 :(得分:0)
不要将此视为输入列表的用户。输入列表的用户就像你的老板手动触发神经元;列表是用户不应该处理的程序内部数据结构。
定义用户输入的格式并编写适当的格式相关代码来解析它。例如,如果您希望用户输入以逗号和(可选)空格分隔的基数为10的整数,则可以使用
ints = [int(s) for s in input().split(',')]
如果您确实希望输入格式为Python文字语法,则可以使用ast.literal_eval
:
obj = ast.literal_eval(input())
如果您认为老板手动触发神经元的想法没有错,您可以让用户使用eval
输入任意Python表达式(而不是语句)。 这几乎不是一个好主意:
# Bad idea - this makes a mess if the user does something wrong and is potentially
# catastrophic if the user does something malicious.
# For example, if the user types __import__('os').system('nasty command'),
# they can delete all your files or steal your browser's saved passwords.
terrible_idea = eval(input())
答案 2 :(得分:0)
用户只能输入 if ($_POST["username"] === "t5" && $_POST["password"] === "just4fun")
{
session_start();
$_SESSION['username'] = true;
header('Location: menu.php');
} else {
header('Location: loginform.html');
}
。这意味着str
返回input()
。如果您想要str
,则必须将其设为list
。其他一切也是如此。
list
如果您希望让他们输入您想要的x = input("a, b, c: ")
# a, b, c: 2,3,4 => x -> "a,b,c" str
l = [int(i.strip()) for i in x.split(",")] # [2, 3, 4]
,那么(最好不要这样做)
repr()