對于我的具體任務,我應該創建一個接收正整數寬度和布林值的函式。然后該函式應根據給定的全域變數回傳一個字串:
ARROWS = ‘<>^v’
PERIOD = ‘.’
ADDITION = ‘ ’
MULTIPLICATION = ‘X’
RANDOM_THINGS = ‘*|’
寬度整數應確定字串的長度,布林值應確定是否可以使用全域變數 RANDOM_THINGS(如果設定為 false,則僅使用前四個變數)。
到目前為止,我的代碼占了這一部分。如下:
Def function(n, true_or_false)
arrows = random.choice(ARROWS) #to separate the characters in the string
list1 = (arrows, ADDITION, MULTIPLICATION, PERIOD)
x = random.choices(list1, k =n)
print(“”.join(x))
這就是概率的來源:字串的每個字符應該有 5/6 的機會來自變數 ARROWS、ADDITION 或 MULTIPLICATION,并且有 1/6 的機會來自變數 PERIOD。如果布林值設定為 True,則字串中的一個(并且只有一個)字符被 RANDOM_THINGS 變數中的一個字符替換的幾率應該是 50%。
uj5u.com熱心網友回復:
from random import choice, choices
ARROWS = '<>^v'
PERIOD = '.'
ADDITION = ' '
MULTIPLICATION = 'X'
RANDOM_THINGS = '*|'
def function(n, maybe_replace):
list1 = [None, ADDITION, MULTIPLICATION, PERIOD]
x = []
# Loop to vary the chosen arrow
for i in range(n):
# update chosen arrow and first element in list1
list1[0] = choice(ARROWS)
# 5/6 is 5 times greater than 1/6
# so use 5 and 1 at probability weights
x.append(*choices(list1, weights=[5, 5, 5, 1], k=1))
if maybe_replace:
position = choice(range(n))
others = [x[position], choice(RANDOM_THINGS)]
# others has two elements, so 50% prob for each...
x[position] = choice(others)
print("".join(x))
uj5u.com熱心網友回復:
你是這個意思嗎?
def function(n, includeothers = False):
alphabet = ARROWS PERIOD ADDITION MULTIPLICATION
if includeothers:
alphabet = RANDOM_THINGS
x = random.choices(alphabet, k =n)
print(“”.join(x))
您想要選項串列中的所有箭頭嗎?如果是箭頭,你所擁有的只會包括一個,而忽略其余的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516486.html
