【发布时间】:2021-01-18 21:50:12
【问题描述】:
尝试创建一个生成器,该生成器在指定范围内生成一组随机数字,然后在生成指定目标数字后停止。将打印达到该数字的尝试次数。如果在指定的尝试次数内未生成该数字,则用户将获得单独的提示。到目前为止,这是我所拥有的:
try:
min_value = int(input("Enter the minimum value for your random generator: "))
max_value = int(input("Enter the maximum value for your random generator: "))
target = int(input("Enter the target value you are trying to find: "))
max_attempts = int(input("Enter the maximum number of attempts to find the target before stopping generation: "))
except ValueError:
print("Please enter an integer value for your input!")
def find_target(target: int, min_value: int, max_value: int, max_attempts: int) -> Optional[int]:
# Start counter for number of attempts
j = 0
while j in range(max_attempts):
#Increment the attempts counter
j += 1
for k in range(min_value, max_value):
if not target:
yield k
gen = find_target(target, min_value, max_value, max_attempts)
while True:
print(next(gen))
一旦找到目标,理想情况下会发生这样的事情:
# Stop the generator
print("Target acquired! It only took ", j, "tries to find the target!")
gen.close()
if find_target(target, min_value, max_value, max_attempts) is None:
print("Could not find target within the max number of attempts. Maybe better luck next time?")
现在生成器立即停止(我猜它与if not target 的指定方式有关)。我怎样才能得到这个工作的逻辑?
【问题讨论】:
-
不是所要求的,但我在发布的代码中看不到任何随机内容。
range是一个序列生成器(如果有的话)。