【问题标题】:sep='-' returns invalid syntax after working perfectly finesep='-' 正常工作后返回无效语法
【发布时间】:2014-09-28 08:28:54
【问题描述】:

大家好,我是编程新手,但我很快就学会了。在我的课堂上,我们需要在同一个文件中创建不同的程序。有问题的错误出现在一个已完成的程序中,但是当我完成任务时,我去测试整个事情,这突然出现了。代码如下:

def make_string_sandwich(string1, string2):
''' ????
Parameters:
    string1 - outside string
    string2 - inside string
Variables:
    <string_sandwich - line of strings in the order string1-string2-string1>
'''
string_sandwich = (string1, string2, string1, sep='-')
return string_sandwich

assertEqual(make_string_sandwich('bbb','a'), 'bbb-a-bbb')

错误是该行中的=:

string_sandwich = (string1, string2, string1, sep='-')

在我写完代码并继续前进后,我从未接触过它,但突然之间发生了这种情况。如果我删除 sep='-',则 assertEqual 示例的输出为:

('bbb', 'a', 'bbb')

我制作的其他使用 sep= 函数的程序仍然可以完美运行。我注释掉了文档中的所有其他内容,以隔离该程序,以确保它不会被未来的代码搞砸,但这不起作用。我想到的唯一其他写法是:

string_sandwich = (string1, string2, string1), sep='-'
string_sandwich = ((string1, string2, string1), sep='-')

但这些都不起作用(不是我想的那样)。我能找到的唯一相关线程的解决方案是 python 使用的是版本 2 而不是 3,并提供了一种检查版本的方法。当我这样做时,输出是:

3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 10:37:12) [MSC v.1600 32 bit (Intel)]

所以我知道我使用的是最新版本的 python。我以为我已经完成了这项任务,现在这正在发生,明天到期。请帮我!!我非常感谢我能在这个问题上得到的任何帮助。

【问题讨论】:

  • 附带说明,3.3.5 不是 Python 的最新版本; 3.4 从 3 月开始发布,3.4.1 从 5 月开始发布。

标签: python syntax


【解决方案1】:

sepprint 函数的参数。做你想做的事,你必须使用join函数:

return '-'.join((string1, string2, string1))

【讨论】:

  • 非常感谢!!!!我们还没有学习 join 函数,所以我不确定是什么导致原来的停止工作了。
【解决方案2】:

使用str.format:

def make_string_sandwich(string1, string2):
    ''' ????
    Parameters:
        string1 - outside string
        string2 - inside string
    Variables:
        <string_sandwich - line of strings in the order string1-string2-string1>
    '''
    string_sandwich = (string1, string2, string1)
    return "{}-{}-{}".format(*string_sandwich)

如果你想使用sep,你必须print 输出:

def make_string_sandwich(string1, string2):
    ''' ????
    Parameters:
        string1 - outside string
        string2 - inside string
    Variables:
        <string_sandwich - line of strings in the order string1-string2-string1>
    '''
    print(string1, string2, string1,sep="-")

【讨论】:

  • 感谢您的帮助!!我想使用 'print(string1, string2, string1, sep='-')' 解决方案,但是当我使用该代码运行 assertEqual 函数时,计算出的答案是 'None'
  • 没有返回值的函数默认返回None
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多