Python 初学者扑克程序:回溯和断言错误

Python 初学者扑克程序:回溯和断言错误,python,Python,我正在尝试让这个扑克程序工作,这是我的第一个Python程序。。我在理解两个错误时遇到困难,因为代码对我来说是正确的 使用Eclipse/PyDev > Traceback (most recent call last): File "C:\Documents and Settings\****\workspace\xfz\src\Unit1.py", line 98, in <module> print test() File "C:\Documents and

我正在尝试让这个扑克程序工作,这是我的第一个Python程序。。我在理解两个错误时遇到困难,因为代码对我来说是正确的

使用Eclipse/PyDev

> Traceback (most recent call last):
  File "C:\Documents and Settings\****\workspace\xfz\src\Unit1.py", line 98, in <module>
    print test()
 File "C:\Documents and Settings\****\workspace\xfz\src\Unit1.py", line 86, in test
    assert card_ranks(sf) == "TC 9C 8C 7C 6C"
AssertionError
计算结果为False,因为

    card_ranks(sf) = [10, 9, 8, 7, 6]  != "TC 9C 8C 7C 6C" 

    >>> card_ranks(sf) 
    [10, 9, 8, 7, 6]
    >>> card_ranks(fk) 
    [9, 9, 9, 9, 7]
    >>> card_ranks(fh) 
    [10, 10, 10, 7, 7]
您运行的函数名为test(),它使用assert进行测试,以确保测试的语句为True。Assert抛出一个AssertionError,如果其中任何一个为False,则程序存在

你的下一行也是假的:

    >>> poker([sf, fk, fh])
    [['6C', '7C', '8C', '9C', 'TC']]
    >>> sf
    ['6C', '7C', '8C', '9C', 'TC']
    >>> poker([sf, fk, fh]) == sf
    False
提示:在文件上运行find/replace,并将“assert”替换为“print”

计算结果为False,因为

    card_ranks(sf) = [10, 9, 8, 7, 6]  != "TC 9C 8C 7C 6C" 

    >>> card_ranks(sf) 
    [10, 9, 8, 7, 6]
    >>> card_ranks(fk) 
    [9, 9, 9, 9, 7]
    >>> card_ranks(fh) 
    [10, 10, 10, 7, 7]
您运行的函数名为test(),它使用assert进行测试,以确保测试的语句为True。Assert抛出一个AssertionError,如果其中任何一个为False,则程序存在

你的下一行也是假的:

    >>> poker([sf, fk, fh])
    [['6C', '7C', '8C', '9C', 'TC']]
    >>> sf
    ['6C', '7C', '8C', '9C', 'TC']
    >>> poker([sf, fk, fh]) == sf
    False
提示:在文件上运行find/replace,并将“assert”替换为“print”

更改:

assert card_ranks(sf) == "TC 9C 8C 7C 6C"
assert card_ranks(fk) == "9D 9H 9S 9C 7D"
assert card_ranks(fh) == "TD TC TH 7C 7D"
致:

因此,检查错误的一个简单方法是放置一些打印语句。从根本上说,看看你在做什么。您的card_ranks()函数在注释中表示它返回一个列表,但您仍然将其与字符串进行比较。在编写代码之前,请多想一想。调试时节省时间。

更改:

assert card_ranks(sf) == "TC 9C 8C 7C 6C"
assert card_ranks(fk) == "9D 9H 9S 9C 7D"
assert card_ranks(fh) == "TD TC TH 7C 7D"
致:


因此,检查错误的一个简单方法是放置一些打印语句。从根本上说,看看你在做什么。您的card_ranks()函数在注释中表示它返回一个列表,但您仍然将其与字符串进行比较。在编写代码之前,请多想一想。在调试时节省时间。

将第86行更改为
assert card_ranks(sf)=“TC 9C 8C 7C 6C”,card_ranks(sf)
并提供新的回溯。确定-我将第86-88行更改为:“assert card_ranks(sf)=“TC 9C 8C 7C 6C”,card_ranks(sf)assert card_ranks(fk)=“9D 9H 9S 9C 7D”,card_ranks(sf)assert card_ranks(fh 7C 7D)”,你能解释一下你所说的“并给出新的追溯”是什么意思吗?抱歉,我是Python新手,不知道这意味着什么。我要求您所做的更改仍然会导致断言错误,但它会向您显示出错误所在。在执行assert语句时,应始终为其提供两个参数。第二个参数由断言错误打印。使用它查看
card_-ranks(sf)
实际上等于什么。将第86行更改为
assert card_-ranks(sf)=“tc9c8c7c6c”,card_-ranks(sf)
并给出新的回溯。确定-我将第86-88行更改为:“assert card_-ranks(sf)=“tc9c8c7c6c”,card_-ranks(sf)assert card_-ranks(fk)=“9h9s9c7d”,card_-ranks(sf)assert card_ranks(fh)=“TD TC TH 7C 7D”,card_ranks(sf)”你能解释一下“并给出新的回溯”是什么意思吗?抱歉,我是Python新手,不知道这意味着什么。我要求您所做的更改仍然会导致断言错误,但它会向您显示出错误所在。在执行assert语句时,应始终为其提供两个参数。第二个参数由断言错误打印。使用它查看
card_ranks(sf)
实际上等于什么。现在获取此错误,不确定print()的问题是什么,也不确定第89行的调用:回溯(最近一次调用):文件“C:\Documents and Settings****\workspace\xfv\src\Unit1.py”,第98行,在print test()文件中“C:\Documents and Settings****\workspace\xfv\src\Unit1.py”,第89行,在test assert poker([sf,fk,fh])==sf assertionError现在获取此错误,不确定print()的问题是什么,也不确定第89行的调用:回溯(最后一次调用):文件“C:\Documents and Settings****\workspace\xfv\src\Unit1.py”,第98行,在print test()中文件“C:\Documents and Settings****\workspace\xfv\src\Unit1.py”,第89行,在测试断言扑克([sf,fk,fh])==sf断言错误中