3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是一種方法:
import random
num1 = random.randint(-5, 4)
num2 = random.randint(-5, 4)
counter = 1
while num1 * num2:
#while will iterate until the condition is not true, in python 0 is equivalent to false.
num1 = random.randint(-5, 4)
num2 = random.randint(-5, 4)
counter += 1
print("Took this many iterations: ", counter)
沒有初始化的例子num1和num2
import random
counter = 1
while random.randint(-5, 4) * random.randint(-5, 4):
counter += 1
print("Took this many iterations: ", counter)

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
您生成一對(duì)數(shù)字,并使用該產(chǎn)品來運(yùn)行您的循環(huán)。由于產(chǎn)品無法更改,因此它是一個(gè)無限循環(huán)。嘗試這個(gè):
import random
product = 10000 # Dummy value to get into the loop.
while product != 0:
num1 = random.randint(-5, 4)
num2 = random.randint(-5, 4)
print("Generated number 1: ", num1)
print("Generated number 2: ", num2)
product = num1 * num2
print("Product result: ", product)
if product != 0:
print("Failed iteration")
else:
print("Successful iteration")

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
random.randint(a, b)返回一個(gè)隨機(jī)整數(shù)N,這樣a <= N <= b
random.randrange(a, b)返回一個(gè)隨機(jī)整數(shù)N,這樣注意和a <= N < b
之間的區(qū)別<<=
如果您想要 -5 到 5(含)范圍內(nèi)的數(shù)字,那么您 需要
randint(-5, 5)
...
randrange(-5, 6)
randint(-5, 4)
以下代碼將實(shí)現(xiàn)您的目標(biāo):
import random
iteration_number = 0
while True:
iteration_number += 1
num1 = random.randint(-5, 5)
num2 = random.randint(-5, 5)
print("Generated number 1: ", num1)
print("Generated number 2: ", num2)
product = num1 * num2
print("Product result: ", product)
if product == 0:
break # exit the loop
print("We iterated", iteration_number, "times.")
雖然上面的代碼有效,但它相當(dāng)難看。這是因?yàn)樗?jīng)是一個(gè)龐大的腳本,而不是分解成單獨(dú)的函數(shù)。下面的代碼實(shí)現(xiàn)了相同的最終結(jié)果,但更易于閱讀、理解和修改:
import random
def gen_once():
"""
generate data once
"""
num1 = random.randint(-5, 5)
num2 = random.randint(-5, 5)
return num1, num2
def test_once(num1, num2):
if num1 * num2 == 0:
return True
return False
def gen_and_test_once():
num1, num2 = gen_once()
return test_once(num1, num2)
def gen_and_test_many():
iteration_number = 0
while True:
iteration_number += 1
test_result = gen_and_test_once()
if product == 0:
return iteration_number
iteration_count = gen_and_test_many()
print("We iterated", iteration_count, "times.")
添加回答
舉報(bào)