我正在嘗試解決一個問題,我生成一個三個亂數陣列并回圈遍歷它,直到它的總和小于或等于 21。我的問題是是否有比以下更好/更高效的方法來做到這一點,只是為了讓自己適應最佳實踐。
rng = np.random.default_rng()
a = 1
while a == 1:
rints = rng.integers(low=1, high=11, size=3)
suma = np.sum(rints)
if (suma <= 21):
print(rints, suma)
break
謝謝!
uj5u.com熱心網友回復:
while 回圈和 if 陳述句可以結合使用。這將使它更有效率。
rng = np.random.default_rng()
target_value = 21
suma = 999
while suma >= target_value:
rints = rng.integers(low=1, high=11, size=3)
suma = np.sum(rints)
我還建議將此發布到代碼審查。他們更適合這類問題。
uj5u.com熱心網友回復:
只是使用 itertools 的較短形式
import numpy as np
from itertools import dropwhile
rng = np.random.default_rng()
rints = list(dropwhile(lambda x: np.sum(x)>21, rng.integers(low=1, high=11, size=3)))
print(rints, np.sum(rints))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/337666.html
