【问题标题】:Formatting a time value格式化时间值
【发布时间】:2015-08-26 07:13:16
【问题描述】:

在以下程序中,我返回一个布尔值和一个表示元组中执行时间的值:

import time


# O(n) time
def isAnagram1(s1, s2):
    start = time.time()
    letterlist1 = [0] * 26
    letterlist2 = [0] * 26

    for i in xrange(0, len(s1)):
        pos = ord(s1[i]) - ord('a')
        letterlist1[pos] = letterlist1[pos] + 1

    for i in xrange(0, len(s2)):
        pos = ord(s2[i]) - ord('a')
        letterlist2[pos] = letterlist2[pos] + 1

    for i in xrange(0, 26):
        if letterlist1[i] != letterlist2[i]:
            end = time.time()
            return False, end-start

    end = time.time()
    return True, end-start
    pass


def main():
    str1 = input("Enter string 1: ")
    str2 = input("Enter string 2: ")

    print "Is Anagram1: %s, "
    "Operation required %10.7f seconds" % isAnagram1(str1, str2)

但是,在调用此函数时,我需要将时间值转换为浮点值,以便正确打印出来。如果不是,它会给出错误:TypeError: not all arguments convert during string formatting。我想我必须找到一种方法来获得表示执行时间转换的单个值。

任何帮助将不胜感激。

【问题讨论】:

  • 你的返回值已经是一个浮点数。
  • 相反,我收到关于 %b 是不受支持的格式字符的错误。
  • 你的pass 没有做任何事情
  • 整个方法可能就是def isAngram1(s1, s2): return collections.Counter(s1) == collections.Counter(s2)
  • def isAnagram1(s1, s2): return sorted(s1) == sorted(s2)

标签: python string-formatting


【解决方案1】:

您缺少“\”作为续行。所以你有一个print 语句,它将只打印文字"Is Anagram1: %s, "。下一行是 Python 尝试评估的单独表达式。

你还需要使用raw_input,因为这是 Python2

这里是固定的main函数

def main():
    str1 = raw_input("Enter string 1: ")
    str2 = raw_input("Enter string 2: ")

    print "Is Anagram1: %s, " \
    "Operation required %10.7f seconds" % isAnagram1(str1, str2)

【讨论】:

  • 谢谢,但我尝试进行更改,但仍然显示相同的错误: Traceback(最近一次调用最后一次):文件“”,第 1 行,在 main( ) 文件“/Volumes/Macintosh HD 2/Academic work/CST - 501 (Coding Assignments)/Coding/Problems/isAnagram.py”,第 52 行,主要“需要操作 %10.7f 秒”% isAnagram1(str1, str2) TypeError:字符串格式化期间并非所有参数都转换了
  • @ÀbhìshékTìrkey 您在格式化字符串中使用一个值并从 isAnagram1 返回一个包含 2 个值的元组
  • @PeterWood 怎么样,因为我在语句中使用了两个格式字符串: print "Is Anagram1: %b, Operation required %10.7f seconds" % isAnagram1(str1, str2)跨度>
  • @ÀbhìshékTìrkey "Operation required %10.7f seconds" 只有一个。
猜你喜欢
  • 2019-02-17
  • 2022-01-21
  • 2011-10-28
  • 2011-04-14
  • 2015-01-30
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多