【问题标题】:I am unable give the output BUST我无法给出输出 BUST
【发布时间】:2020-08-29 14:20:30
【问题描述】:

给定 1 到 11 之间的三个整数,如果它们的和小于或等于 21 ,则返回它们的和。

如果总和超过 21 并且有 11,则将总和减少 10。

最后,如果sum(即使调整后)超过21,返回BUST

def func(a,b,c ):
    while((a,b,c)in range (1,12)):
        sum=a+b+c
        if sum<=21:
            return sum
        if sum>21 and 11 in (a,b,c):
            sum=sum-10
            if sum>21:
                return "Bust"
print(func(9,9,9))

【问题讨论】:

  • 总和超过21没有11怎么办?对于这种情况,您的函数不返回任何内容。

标签: python python-3.x


【解决方案1】:

我认为你需要:

def adj_sum(a,b,c):
    s = a+b+c
    if s <= 21:
        return s
    elif s>21 and 11 in (a,b,c):
        s = s -10
        
    result = s if s<=21 else "bust"
    return result

print(adj_sum(9,9,9))
# Bust

print(adj_sum(9,9,11))
# 19

【讨论】:

    【解决方案2】:

    请试试这个:

    def func(a, b, c):
      abc = (a, b, c)
      sum_abc = sum(abc)
      if sum_abc > 21 and 11 in abc:
        sum_abc -= 10
      return "BUST" if sum_abc > 21 else sum_abc
    
    print(func(9,9,9))
    

    【讨论】:

    • print(func(9,9,9)) "Bust" print(func(9,9,11)) 19 这些是测试用例
    【解决方案3】:

    试试这个

    def func(a,b,c):
        def check(x):
            return x in range(1,12)
        if check(a) and check(b) and check(c):
            vars = [a,b,c]
            res = sum(vars)
            if res <= 21:
                return res
            elif res > 21:
                if 11 in vars:
                    res -= 10
                
            return res if res < 21 else 'Bust'
    

    【讨论】:

    • @Mounika - 这就是你所需要的。通过所有检查和条件。试试这个
    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多