Python RNG和计数器[已关闭]

zdwk9cvp  于 2022-12-28  发布在  Python
关注(0)|答案(2)|浏览(126)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

47分钟前就关门了。
Improve this question
我在完成要求我做的家庭作业时遇到了麻烦。请编写一个代码,执行以下操作:
1.定义一个返回1到10之间整数的函数。
1.调用定义的函数以获取随机整数。
1.继续绘制随机整数,直到获得大于或等于8的数字。
1.显示在停止之前进行了多少次抽奖
您应该导入随机模块。
我很高兴这个任务的完成,但也非常感谢你的解释。我目前不知道如何记录我停下来之前抽了多少次。我目前有以下信息,请帮助?

from random import randint
rng= randint(1,11)
def random_number_generator():
    print(rng)
    while rng<=7: 
        break
random_number_generator()
tsm1rwdh

tsm1rwdh1#

from random import randint  
rng = randint(1, 11)  # get a random number between 1 and 11

def random_number_generator():  # define a function
    print(rng)  # print random generated number
    while rng <= 7:  # if rng <= 7 condition is True
        break  # break out of while loop immediately
    # no return statement, so random_number_generator returns none

random_number_generator()  # Call function

按照您提供的代码,让我们看看您需要解决的4个任务。
1.定义一个返回1到10之间整数的函数。
正如你已经知道的,你可以用关键字def定义一个函数,所以你的函数头def random_number_generator()定义了一个名为random_number_generator的函数,当函数被调用时,它不带参数,因此有空括号()
在Python中,每个函数都默认返回None,如果你想改变这个行为,你必须在你的函数中添加一个return语句。

def get_two():
    return 2

x = get_two()  # store return value in variable x
print(x)  # prints 2

get_two在调用时返回数字2
1.调用定义的函数以获取随机整数。
您正确地从random模块中导入了randint,生成了一个介于110之间的随机整数。但是您必须小心选择数字,因为randint包含这两个值。也就是说,randint(1, 11)将为您提供一个介于1和11之间的随机整数。
1.继续绘制随机整数,直到获得大于或等于8的数字。

  • Continue drawing* 在本文中表示反复调用random_number_generator函数,直到得到 * 大于或等于8* 的数字。

你对给定条件下while循环的想法是正确的。但是考虑一下它的位置。把循环放在一个每次调用只生成一个随机数的函数中有意义吗?
1.显示在停止之前进行了多少次抽奖
使用print函数显示您绘制了多少次。为了获得绘制次数,您可以添加一个counter变量,该变量随每次循环而递增。每次循环时,您可以向counter变量添加1。有两个选项可供您执行此操作:

  1. counter = counter + 1,这可能很难处理
    1.这就是为什么counter += 1有一个简写,它和1一样,但是你不需要写counter两次。
    用这个你可以建立一个简单的计数器,就像这样:
counter = 0
i = 10
while i > 3:
    counter += 1  # Increment counter by 1 each loop
    i -= 2  # Decrement i by 2 each loop
print(counter)  # prints 4

话虽如此,您现在可以开始实现给定的任务了。
1.从random模块导入randint
1.定义一个返回1和'10'之间的随机数的函数
1.重复生成随机数,直到它大于或等于8
1.计算在循环终止之前所用的绘制次数。

from random import randint  # 1. 

def random_number_generator():  # 2.
    return randint(1, 10)

counter = 0  # Initialize counter with 0

while random_number_generator() < 8:  # Draw a number until number is >= 8
    counter += 1  # increment counter to count draws
print(counter, "draw(s) needed until a number greater than or equal 8 was drawn")  # Display draws needed

由于不需要存储随机生成的数字,因此可以在循环条件中使用random_number_generator函数调用来检查该数字是否大于或等于8。
在循环中,您只需计算需要绘制一个数字的次数。
但是你可以把这个值存储在变量rng中来检查循环条件,在这种情况下,你需要给rng赋值两次,一次是在while循环外初始化变量rng,第二次是在循环内改变rng的值。

p1tboqfb

p1tboqfb2#

请参见下面代码中的注解。

'''
Generate random integers until a value equal or greater than 8 is returned.
Report how many attempts it took.
''' 
from random import randint

# Define a function which ONLY returns a random integer between 1 and 10 

def rand_int():
    return (randint(1,10)) # parameters are inclusive, i.e. can return both 1 and 10

# Set initial values for a counter and the random integer result

counter = 0
random = 0

while random <= 7: # Continue running while random int is too low
    counter += 1 #Increment counter variable by 1 each loop
    random = rand_int()
    print('Current count is ', counter, ', integer is ', random)
    if counter > 100:
        print('Too many tries, something has probably gone wrong')
        break

# Display success message

print('Success! Integer ', random, ' returned after ', counter, 'attempts!')

相关问题