当前位置: 首页 > 知识库问答 >
问题:

如何让我的代码将输入作为一组元组,并且仍然返回相同的答案?

何勇
2023-03-14

所以我试着写两段代码,其中一段试图找出一个代码序列是否是fourz

Fourz基本上可以看到一张卡片是否有4个相同的第一个字符和一个不相同的字符。

例如,

fourz(['3S', '3D', '3C', '3H', '5S']) returns True because there are 4 3 and one 5
fourz(['4S', '3D', '3C', '3H', '5S']) returns False because there are only three 3, and one 4 and one 5.

现在我有了这个代码:

def is_four_of_a_kind(h):
    h = list(h)
    values = [i[0] for i in h]
    card_order_dict = {'2': 2, '3':3, '4':4, '5': 5, '6':6, '7':7,
                       '8':8, '9':9,'T':10, 'J':11, 'Q':12, 'K':13, 'A':14 }
    count = 1
    rank_values = [card_order_dict[i] for i in values]
    rank_values = sorted(rank_values)

    for i in range(1,len(rank_values)):
        if rank_values[i] == rank_values[0]:
            count += 1
    if count == 4:
        return True
    else:
        return False

当代码是一个列表时,此代码正确返回输出,但当它是一组元组时,此代码不起作用

所以如果我的代码是这样的fourz({('3S','3D','3C','3H','5S')}。。

我的代码需要做哪些更改才能正常工作??

共有1个答案

郎河
2023-03-14

这是因为您正在集合中定义一个元组。因此,当您将列表转换为列表时,列表中只有一个元素。

为了使代码工作,您可以对转换到列表的功能进行简单的更改。

def is_four_of_a_kind(h):
if type(h) == set:
    for i in h:
        h = list(i)
else:
    h = list(h)

values = [i[0] for i in h]
card_order_dict = {'2': 2, '3':3, '4':4, '5': 5, '6':6, '7':7,
                   '8':8, '9':9,'T':10, 'J':11, 'Q':12, 'K':13, 'A':14 }
count = 1
rank_values = [card_order_dict[i] for i in values]
rank_values = sorted(rank_values)

for i in range(1,len(rank_values)):
    if rank_values[i] == rank_values[0]:
        count += 1
if count == 4:
    return True
else:
    return False
 类似资料:
  • 我有以下任务 给定一个字符串数组,编写一个函数,返回一个对象,该对象按第一个字符对输入数组的每个元素进行分组。 我的代码在下面。我得到一个错误((加了注释)说 TypeError:无法读取未定义的属性“0” 有人能解释一下为什么它说它是未定义的吗? null null

  • 因此,我试图分析我的元组集,看看对于该集中的x,是否有两对分别由2个元素和3个元素组成的元素。 所以就像每个第一个字符一样,必须有3个相同的字符和2个相同的字符。。。 但它们必须是连接的,例如如果有3A和2C,则顺序只能是AAAAC或CCAAA,而不能是CACAA或ACCAA等 那么比如说,, 下面是我对代码的尝试 然而,我的代码只有在它是一个列表时才起作用。。。当我放入一组元组时,它不起作用。。

  • 我目前正在使用平铺地图为pyplay中的一个游戏开发地图编辑器。关卡由以下结构中的块构建而成(尽管要大得多): 其中“1”是一块墙,“0”是一块空空气。 以下代码基本上是处理块类型更改的代码:

  • 我已经做了几个小时了!!!!赋值的更新指出,当用户输入的值超过100时,我们需要停止用户输入。不重写整个事情,我如何“循环”这个?我知道代码方法很重,但这是作业的要求。我想我的大脑只是java汤!任何帮助将是真棒:) } 如果我在计数器后输入,用户在第一次输入后收到此消息。。。我做错了什么!!!!!! 中断的问题是“JOptionPane.showMessageDialog(null,“您的数字之

  • 我试图调用一个类似如下的实度函数: 使用web3j,我将创建与下面类似的函数,但是我不太确定如何表示以Solidity表示的结构的顺序。 关于我应该如何表示结构的任何指示? 谢了。

  • 请问下,各位老师有遇到过这样的需求吗? 让数组元素作为子组件。