python - 帮助 Python 方法中的内部循环

标签 python methods if-statement

我无法理解为什么我的方法中的内部循环没有产生我期望的行为,我希望有人能帮助我理解这个问题。

我的方法采用一系列参数 (*args),如果参数是整数,我想在整数周围添加美元符号(例如 $5$) .

def t_row(*args):
    columns = 5
    if len(args) == columns:
        count = 0
        for value in args: 
            if type(value) is int:
                value = ''.join(('$', str(value), '$'))
            count += 1
            if count < len(args):
                penult_args = args[:-1]
                line_prefix = [''.join((str(value), " & ")) for value in penult_args]
            elif count == len(args):
                line_suffix = [''.join((str(value), " \\\\", "\n"))]
        count += 1
        line_list = line_prefix + line_suffix 
        line = ''.join(item for item in line_list)
        return(line)

上面的代码是这样使用的:

>>> s = q.t_row('data1', 'data2', 3, 'data4', 5)  
>>> print s  
data1 & data2 & 3 & data4 & $5$ \\  

为什么我在整数 3 周围没有美元符号?我该如何修复我的代码以更正此问题?

最佳答案

因为在这条线上:

            line_prefix = [''.join((str(value), " & ")) for value in penult_args]

你从原始列表中提取值(减去最后一项),而在这一行:

            value = ''.join(('$', str(value), '$'))

您添加了 $ 但从未将值存储回列表中。

5 只得到 $ 因为它是最后一项,所以你直接引用它:

            line_suffix = [''.join((str(value), " \\\\", "\n"))]

完成这一切的更好方法是:

def t_row(self, *args):
    if len(args) == self.columns:
        result = []
        for value in args:
            if isinstance(value, int):
                result.append('$%d$' % value)
            else:
                result.append(value)
        return ' $ '.join(result) + r' \\'

作为单行,应该是

t_row = lambda self, *args: (' $ '.join('$%d$' % 
          value if isinstance(value, int) else value for value in args) + r' \\' 
              if len(args) == self.columns else None)

但这实际上不是一个好主意。

关于python - 帮助 Python 方法中的内部循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549858/

相关文章:

python - 在 Twisted 中将消息从一台服务器发送到另一台服务器

python - 使用 python 的最常见的 2-grams

methods - 在 Racket 方法名称中使用 "?"是一种不好的做法吗?

java - 在 Java 中根据字符串数组中的项目检查输入

c - 格式化此语句的惯用 C 方式是什么

python - Flask:如何检测用户离开页面?

当装饰器机制是一个类时,类成员上的 Python 装饰器会失败

function - Swift 方法中的多个未命名参数

java - Java中哪些情况需要同步方法访问?

Oracle PL/SQL - 如果不满足条件则退出开始结束 block