首先,为了提供一些背景,我正在设计一个基于控制台的二十一点版本,用于娱乐和学习目的.下面的代码是我的解决方案,用于判断给定用户输入的不同条件.

下面的函数处理睡眠时间和用户输入,其文件被导入到Main.

import consoleControl as cs

def console_control( string, n_sec, return_flag, break_check, condition, wrapper=str)

如果期望返回,则将RETURN_FLAG设置为True,如果传递了条件,则将执行以下代码.

if condition:
    while True:
        try:
            # This is only meant to be used on numeric types 
            userIo = wrapper(input(string))
                if eval(str(userIo) + condition):
                    return userIo
                else:
                    return None

         except ValueError:
            return None

我的第一次成功运行包括以下函数调用.

# Gets a positive numeric value
def get_bankRoll():
    while True:
        # condition being passed to console_control()
        condition = '> 0'
        try:
            while True:
                string = 'How much money will you be gamblin\'... player? \nEuros: '
                cash = hud_control(0, None, None, None, None, [string, None, True, None, condition, float])
            # more code follows

呼叫至->

# Printing routine with set ascii charaters and other printed statements
def hud_control(hud, cash, game_phase, hand_display_args,  new_line, control_args):

    # Code between '#' removed for clarity
    if hud == 0:
        pass
    else:
        pass
    if new_line:
        for x in range(new_line): print('\n')
    # 

    if control_args:
        if control_args[-1]:
            return cs.console_control(*control_args)
        else:
            cs.console_control(*control_args)

我已经读到了val是非常不安全的,事实上,当我测试删除包装器并计算出"sys.exit(0)#"时,我成功地退出了.但是使用包装器我就不能了,所以假设我只想计算数字表达式.

以下任何一个对我来说都是很好的答案:

  • 人们将如何利用当前的代码?
  • 动态(输入、条件)判断的替代方案是什么?

注意:如果可能的话,我更喜欢无类的实现.

推荐答案

"val()"不安全.它不会阻止用户输入要执行恶意代码

另一种 Select 是使用

import ast
s2 = ast.literal_eval(s1)

Python相关问答推荐

替换字符串中的多个重叠子字符串

输出中带有南的亚麻神经网络

在Mac上安装ipython

Python键入协议默认值

如何从pandas的rame类继承并使用filepath实例化

无法连接到Keycloat服务器

为什么\b在这个正则表达式中不解释为反斜杠

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

Maya Python脚本将纹理应用于所有对象,而不是选定对象

python—telegraph—bot send_voice发送空文件

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

30个非DATETIME天内的累计金额

使用类型提示进行类型转换

如何在GEKKO中使用复共轭物

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

当输入是字典时,`pandas. concat`如何工作?

有没有一种方法可以在朗肯代理中集成向量嵌入

一维不匹配两个数组上的广义ufunc

对于数组中的所有元素,Pandas SELECT行都具有值

Django查询集-排除True值