【问题标题】:How to always get a positive output?如何始终获得积极的输出?
【发布时间】:2014-01-04 05:16:01
【问题描述】:

这是我的代码:

import random
minimum=int(input("Enter minimum value: "))
maximum=int(input("Enter maximum value: "))
if minimum>maximum:
    temp=minimum
    minimum=maximum
    maximum=temp
howMany = int(input("How many numbers do you want to generate?"))
sum=0
n=1
while n<=howMany:
    num=random.randrange(minimum,maximum)
    sum+=num
    n+=1
    print("Your random generated number is",num)
print("Python's random average between", minimum, "and", maximum, "is", sum/howMany)
avg=minimum+maximum/2
avgTwo=sum/howMany
difference=avgTwo-avg
print("The actual average of minimum and maximum is", avg)
print("The difference from the calculated average and from the actual average is", difference)

当我计算差异时,我需要总是得到一个正数。我尝试翻转被减去的变量,但我随机收到一个负数。

【问题讨论】:

  • 返回结果的绝对值怎么样? abs(x) 对你有帮助吗?
  • abs
  • 提示:您可以直接使用minimum, maximum = maximum, minimum交换最小值和最大值
  • 您的代码还有第二个更微妙的错误:要查看它,请输入彼此分开的最小值和最大值;例如,“4”和“5”,并生成一大堆数字。你几乎肯定想要randrange(minimum,maximum+1)
  • @DanielMartin 这就是为什么我更喜欢random.randint()。我在记住函数边界方面仍然很糟糕,randint 做了我认为应该做的事! :)

标签: python python-3.x integer


【解决方案1】:

如果是负数,只需将该值乘以 -1,那么最终结果就是正数:

difference= avgTwo-avg if avgTwo-avg > 0 else (avgTwo-avg) * -1

【讨论】:

    【解决方案2】:

    您可以取差值的绝对值来获得两个值之间的“距离”:

    >>> abs(2 - 5)
    3
    >>> abs(5 - 2)
    3
    

    【讨论】:

      【解决方案3】:

      以下是一些改进代码的技巧:

      from random import randrange   #import only what need
      mini = int(input("Enter minimum value: "))
      maxi = int(input("Enter maximum value: "))
      if mini > maxi:
          mini, maxi = maxi, mini   #you can swap two values like this
      
      howMany = int(raw_input("How many numbers do you want to generate?"))
      total = 0  # don't use sum as variable name, it is built in function
      for _ in range(howMany):  #you can use a for loop and not have increment a counter
          num = randrange(mini, maxi+1) #add 1 to maxi to get the range you want
          print("Your random generated number is ", num)
          total += num
      
      print("Python's random average between", mini, "and", maxi, "is", total/howMany)
      avg = (mini + maxi)/2  # use ()'s for proper operation order
      avgTwo = total/howMany
      difference = abs(avgTwo - avg)  #use absolute value to get magnitude
      print("The actual average of minimum and maximum is", avg)
      print("The difference from the calculated average and from the actual average is", difference)
      

      【讨论】:

        猜你喜欢
        • 2013-03-22
        • 1970-01-01
        • 2018-05-23
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多