我有这个函数,我在 *args 函数参数中接收可变数量的参数,我必须添加它们。根据这笔款项,我必须检查一些条件:
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)
这是我能够想出的,但在第一手之后它只是打印“不好”
答案 0 :(得分:1)
主要问题似乎是在 argument
循环之外使用 for
。它将始终具有 args
中最后一个参数的值,这不是您想要的。
特别是这些条件:
if(sum > 21 and argument == 11):
sum -=10
print(sum)
if(sum ==21 and argument == 11 and argument == 10):
print("Win!")
对于您列出的输入永远不会为真。
此外,我建议不要调用变量 sum
,因为它是内置函数的名称。具有讽刺意味的是,正是函数的名称会让您在这里的生活更轻松。
total = sum(args)
答案 1 :(得分:0)
当您在循环后使用 argument
时,您只是得到最后一个参数,您没有检查每个参数是否为 11。您应该检查循环内的 11
。
不要使用 sum
作为变量名,因为它是内置函数的名称(您可以用它来计算总和)。
在测试互斥条件时使用 elif
。
def get_hand_value(*args):
total=0
elevens = 0
for argument in args:
total +=argument
if argument == 11:
elevens += 1
if (total < 21):
print("The value of your hand is {}".format(total))
elif total > 21:
total -= elevens * 10
if total < 21:
print("The value of your hand is {}".format(total))
else:
print("No Good!")
elif total == 21 and elevens == 1:
print("Win!")