Python 为什么我的elif不能正常工作?
21点:给定三个介于1和11之间的整数,如果它们的和小于或等于21,则返回它们的和。如果他们的总数超过21,并且有一个11,那么将总数减少10。最后,如果总和(即使调整后)超过21,则返回“半身像”Python 为什么我的elif不能正常工作?,python,python-3.x,Python,Python 3.x,21点:给定三个介于1和11之间的整数,如果它们的和小于或等于21,则返回它们的和。如果他们的总数超过21,并且有一个11,那么将总数减少10。最后,如果总和(即使调整后)超过21,则返回“半身像” def black_jack(a,b,c): if a+b+c <=21: return a+b+c elif a+b+c >21: if (a or b or c) == 11: return (a+b+c-10)
def black_jack(a,b,c):
if a+b+c <=21:
return a+b+c
elif a+b+c >21:
if (a or b or c) == 11:
return (a+b+c-10)
elif (a and b and c)!= 11:
return 'bust'
result = black_jack(9,9,11)
print(result)
def黑色插孔(a、b、c):
如果a+b+c 21:
如果(a或b或c)=11:
返回(a+b+c-10)
elif(a、b和c)!=11:
返回“半身像”
结果=黑色插孔(9,9,11)
打印(结果)
您在if
和elif
条件下犯了错误
我邀请您去看看这个问题,了解如何正确处理布尔条件。请在第5行尝试
每个参数都必须将or语句分开。正如@Jerbearone和@Cherlepops指出的那样,您的错误在于对相等11行或不相等11行的测试 这应该起作用:
def black_jack(a, b, c):
if a + b + c <= 21:
return a+b+c
elif a + b + c > 21:
# if (a or b or c) == 11:
if a == 11 or b == 11 or c == 11:
return (a+b+c-10)
# elif (a and b and c) != 11:
elif a != 11 and b != 11 and c != 11:
return 'bust'
if __name__ == "__main__":
# execute only if run as a script
result = black_jack(9, 9, 11)
print(result)
def黑色插孔(a、b、c):
如果a+b+c 21:
#如果(a或b或c)=11:
如果a==11或b==11或c==11:
返回(a+b+c-10)
#elif(a、b和c)!=11:
埃利夫a!=11和b!=11和c!=11:
返回“半身像”
如果名称=“\uuuuu main\uuuuuuuu”:
#仅当作为脚本运行时执行
结果=黑色插孔(9、9、11)
打印(结果)
这是否回答了您的问题?您不需要第一个elif
:保证ifa+b+c21
必须为true;没有必要检查它。
def black_jack(a, b, c):
if a + b + c <= 21:
return a+b+c
elif a + b + c > 21:
# if (a or b or c) == 11:
if a == 11 or b == 11 or c == 11:
return (a+b+c-10)
# elif (a and b and c) != 11:
elif a != 11 and b != 11 and c != 11:
return 'bust'
if __name__ == "__main__":
# execute only if run as a script
result = black_jack(9, 9, 11)
print(result)