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

如何检查*args函数参数中的值?

古棋
2023-03-14

我有一个函数,在这个函数中,我在一个*args函数参数中接收到一个可变数量的参数,我必须添加它们。基于这个总和,我必须检查一些条件:

  1. 如果两者之和小于21,则打印
  2. 如果和大于21,则每11个值从和中减去10,如果减去所有值后和仍然大于21,则打印“no good”
  3. 如果和是21,并且我有一个10值和一个11值,打印“win”。
def get_hand_value(*args):
    sum=0
    for argument in args:
        sum +=argument
    if(sum < 21):
        print("The value of your hand is {}".format(sum))
    if(sum > 21 and argument == 11):
        sum -=10
        print(sum)
    if(sum>21 and argument != 11):
        print("No Good!")
    if(sum ==21 and argument == 11 and argument == 10):
        print("Win!")    
            
hand_1 = get_hand_value(4,4,4,4)
hand_2 = get_hand_value(11,10)
hand_3 = get_hand_value(11,5,6,4,11,4)
hand_4 = get_hand_value(11,5,6,10)
hand_5 = get_hand_value(10,5,7)

这是我能想到的,但第一手后,它只是打印“不好”

共有1个答案

陆弘新
2023-03-14

主要问题似乎是在for循环之外使用参数。它将始终具有args中最后一个参数的值,而这并不是您想要的。

特别是这些条件:

if(sum > 21 and argument == 11):
    sum -=10
    print(sum)
if(sum ==21 and argument == 11 and argument == 10):
    print("Win!")  

对于您列出的输入永远不会为真。

 类似资料:
  • 我正在结合Lombok和构建器模式使用MapSTRt。我有一个问题,即MapSTRt正在对生成的映射器函数中的所有参数进行显式空检查,并在所有参数为空的情况下提前退出,例如: 我想实现MapStruct不实现完整的空检查。即使所有参数都为null,它也应该设置整个生成器,并在生成器进行null检查(如果有)时调用build。

  • 问题内容: 我想定义一些通用装饰器,以在调用某些函数之前检查参数。 就像是: 旁注: 类型检查只是在这里显示一个示例 我正在使用Python 2.7,但是Python 3.0也会很有趣 问题答案: 从装饰器的功能和方法: Python 2 Python 3 在Python 3中已更改为,并且已更改为。 用法: 可以是或

  • 我有一个基本的rest控制器,可以获取参数。 如果查询字符串包含我没有定义的参数,我如何拒绝连接? 当前,在调用此url时,只使用id执行该方法,而忽略未知的参数。一般来说,这很好,但我如何验证它们,以防返回HTTP状态码?

  • 问题内容: 这是我的简单表格: 这是我的Express.js /Node.js代码: 我试过或或,等等。它们都不起作用。他们都回来了。 当我更改为Get呼叫时,它可以工作,所以..有什么想法吗? 问题答案: 事情已经改变了再次启动 快速4.16.0 ,您现在可以使用与就像在 快车3.0 。 从 Express 4.0到4.15,* 这是不同的: * 然后: 其余的就像在 Express 3.0中一

  • 如何从通过API网关提供的AWS Lambda函数中访问URL查询字符串参数? 我有两个API网关Lambda函数设置,所以我可以从公共URL调用它。我的Python函数很简单: 我已经配置了API的GET“方法请求”处理程序来传递“abc”querystring参数。 我还将API的GET“Integration Request”处理程序配置为从“method.Request.querystri

  • 问题内容: 这是我的简单表格: 这是我的Express.js/Node.js代码: 我尝试过或或,等等。它们都不起作用。他们都回来了。 当我更改为Get呼叫时,它可以工作,所以..有什么想法吗? 问题答案: 事情已经改变了再次启动快速4.16.0,您现在可以使用与就像在快车3.0。 从Express 4.0到4.15,这是不同的: 然后: 其余的就像在Express 3.0中一样 : 首先,您需要