如何在 python 中输入用户的条件或命令?
How to input a condition or a command from user in python?
在python中有什么方法可以让用户输入条件吗?例如:
import numpy as np
m = np.array([0,1,2,3,4,5])
condition = input() # for example 'm > 50'
print( m [condition])
我想要 m[m>5] 的结果,但我想从用户那里输入这个条件。有什么办法吗?
你可以用 eval
做类似的事情,我认为:
x = 5
condition = input('condition: ')
if eval(condition):
print('yes')
而且在输入中写 x==5
或 x>2
等,它应该可以工作。
是的,有办法。您可以使用 built-in eval()
函数来完成此操作,但 仅当您可以信任输入源 时。如果不能,用户可能会提供有害的输入,从而破坏您的系统。 eval
已知可能非常危险。 eval
获取其字符串参数,对其进行解析并将其计算为 Python 表达式。这可以是任意 Python 表达式。一个问题是 Python 允许用户访问和删除系统文件(例如通过 os
模块)。因此 bad-actor 可能会提供您输入 eval 的危险数据,这可能会破坏您的系统。这就是为什么在将输入源提供给 eval 之前,您需要格外小心以确保您可以信任输入源。
例如,如果您知道条件总是类似于 m ? x
,其中 ?
是 <, <=, >=, ==, >
之一,那么下面是一种更安全的方法。您可以先让用户输入其中一个选项,然后检查以确保用户输入了其中一个选项。然后可以让用户输入数字x
。然后,您可以使用 eval
来评估连接的字符串。例如,
import numpy as np
m = np.array([0,1,2,3,4,5])
select = {'<', '<=', '>', '>=', '=='}
sym = input("Enter one of <, <=, >, >=, ==: ")
if sym not in select:
print("Invalid input")
exit()
num = float(input("Enter number: "))
condition = eval('m ' + sym + repr(num))
print(m[condition])
示例会话
Enter one of <, <=, >, >=, ==: >
Enter number: 3
[4 5]
示例会话
Enter one of <, <=, >, >=, ==: harmful_code
Invalid input
在python中有什么方法可以让用户输入条件吗?例如:
import numpy as np
m = np.array([0,1,2,3,4,5])
condition = input() # for example 'm > 50'
print( m [condition])
我想要 m[m>5] 的结果,但我想从用户那里输入这个条件。有什么办法吗?
你可以用 eval
做类似的事情,我认为:
x = 5
condition = input('condition: ')
if eval(condition):
print('yes')
而且在输入中写 x==5
或 x>2
等,它应该可以工作。
是的,有办法。您可以使用 built-in eval()
函数来完成此操作,但 仅当您可以信任输入源 时。如果不能,用户可能会提供有害的输入,从而破坏您的系统。 eval
已知可能非常危险。 eval
获取其字符串参数,对其进行解析并将其计算为 Python 表达式。这可以是任意 Python 表达式。一个问题是 Python 允许用户访问和删除系统文件(例如通过 os
模块)。因此 bad-actor 可能会提供您输入 eval 的危险数据,这可能会破坏您的系统。这就是为什么在将输入源提供给 eval 之前,您需要格外小心以确保您可以信任输入源。
例如,如果您知道条件总是类似于 m ? x
,其中 ?
是 <, <=, >=, ==, >
之一,那么下面是一种更安全的方法。您可以先让用户输入其中一个选项,然后检查以确保用户输入了其中一个选项。然后可以让用户输入数字x
。然后,您可以使用 eval
来评估连接的字符串。例如,
import numpy as np
m = np.array([0,1,2,3,4,5])
select = {'<', '<=', '>', '>=', '=='}
sym = input("Enter one of <, <=, >, >=, ==: ")
if sym not in select:
print("Invalid input")
exit()
num = float(input("Enter number: "))
condition = eval('m ' + sym + repr(num))
print(m[condition])
示例会话
Enter one of <, <=, >, >=, ==: >
Enter number: 3
[4 5]
示例会话
Enter one of <, <=, >, >=, ==: harmful_code
Invalid input