【问题标题】:Random number generator: counter随机数发生器:计数器
【发布时间】:2016-11-04 21:23:31
【问题描述】:

我有这个随机数生成器来记录随机生成器记录的正数、负数和零。但是,当我测试它时,不会记录负数,而是记录在正数计数器中。我看不出我的代码有什么问题,有什么帮助吗?

from random import randint
posi_counter = 0
nega_counter = 0
zero_counter = 0
avg_counter = 0

# Inputs
num_gen = int(input("How many numbers to be generated? "))
if num_gen > 0:
    max_gen = int(input("Enter maximum number to be generated (>0): "))
    min_gen = max_gen * -1
    print("For {} numbers in the range, {} to {}:".format(
    num_gen, min_gen, max_gen))
    avg = 0
    # Outputs
    for x in range(num_gen):
        print(randint(min_gen, max_gen))
        avg_counter += 1
        avg = avg + x
        if x > 0:
            posi_counter += 1
        elif x < 0:
            nega_counter += 1
        elif x == 0:
            zero_counter += 1
    average_total = avg / avg_counter
    print("{} positive numbers".format(posi_counter))
    print("{} zero numbers".format(zero_counter))
    print("{} negative numbers".format(nega_counter))
    print("{:.1f} average value".format(average_total))

【问题讨论】:

  • x,因为range(num_gen) 总是积极的。您没有保留从randint 生成的值。
  • 顺便说一句,我会将您的 avg 变量重命名为 total。 (这不是随机变量的平均值,而是它们的总和 - 但sum 是一个 Python 内置函数,所以名称选择不好。average_total 可能会变成 average。

标签: python python-3.x random counter


【解决方案1】:

x 来自range(num_gen),所以它总是&gt;= 0,改为这样:

for _ in range(num_gen):
    x = randint(min_gen, max_gen)
    print(x)

【讨论】:

  • 啊,我明白了我今天确实学到了更多关于 for 循环的知识。谢谢
猜你喜欢
  • 2011-01-23
  • 2017-04-11
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多