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
做了我认为应该做的事情!:)