Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何始终获得正输出?_Python_Python 3.x_Integer - Fatal编程技术网

Python 如何始终获得正输出?

Python 如何始终获得正输出?,python,python-3.x,integer,Python,Python 3.x,Integer,这是我的代码: 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?"

这是我的代码:

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)
随机导入
最小值=整数(输入(“输入最小值:”)
最大值=整数(输入(“输入最大值:”)
如果最小值>最大值:
温度=最小值
最小值=最大值
最大值=温度
howmount=int(输入(“您要生成多少个数字?”)
总和=0
n=1

而n只要将值乘以
-1
,如果其为负值,则最终结果为正值:

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

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

>>> abs(2 - 5)
3
>>> abs(5 - 2)
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)

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