为什么我的代码中的 range 元素在使用最后一个数字时会出现问题?

问题描述 投票:0回答:1

我正在使用以下代码,它只是从一个范围中选择一个随机数,并将其用作选择其他元素的机会,并且它工作正常,没有错误,但偶尔会从范围中选择的数字(通常是最后一个数字(如 16 或 20)不起作用,我不知道为什么。

代码:

import random

# List used for Age Classifications
ageClass = ["Newborn", "Young", "Aged", "Old", "Ancient", "Timeless"]
randAgeClass = ""
randAge = 0

# Probability of age classes
# Newer classes are much more likely to be selected than the older classes
chance = random.randrange(1, 20)
# Chance Debug
print(chance)

if chance in range(1, 5):
    randAgeClass = "Newborn"
elif chance in range(6, 10):
    randAgeClass = "Young"
elif chance in range(11, 13):
    randAgeClass = "Aged"
elif chance in range(14, 16):
    randAgeClass = "Old"
elif chance in range(17, 18):
    randAgeClass = "Ancient"
elif chance in range(19, 20):
    randAgeClass = "Timeless"
else:
    print("error")

# If statements for age classes
if randAgeClass == "Newborn":
    randAge = random.randrange(1, 20)
elif randAgeClass == "Young":
    randAge = random.randrange(21, 80)
elif randAgeClass == "Aged":
    randAge = random.randrange(81, 250)
elif randAgeClass == "Old":
    randAge = random.randrange(251, 500)
elif randAgeClass == "Ancient":
    randAge = random.randrange(501, 1000)
elif randAgeClass == "Timeless":
    randAge = random.randrange(1001, 6000)
else:
    print("error")

print("Vampire Name: Steve")
print("Age Classification:", randAgeClass)
print("Age:", randAge)

成功的输出如下所示:

这是不成功的输出的样子:

只有当所选范围内的随机数是范围内的最后一个数字(例如 5、10、16)时,才会出现这种情况...为什么会发生这种情况以及如何解决此问题?

我尝试使用列表但不起作用,所以我宁愿只使用范围。

python python-3.x random range
1个回答
0
投票

您需要更改范围:

if chance in range(1, 6):
    randAgeClass = "Newborn"
elif chance in range(6, 11):
    randAgeClass = "Young"
elif chance in range(11, 14):
    randAgeClass = "Aged"
elif chance in range(14, 17):
    randAgeClass = "Old"
elif chance in range(17, 19):
    randAgeClass = "Ancient"
elif chance in range(19, 21):
    randAgeClass = "Timeless"
else:
    print("error")

这是独家

© www.soinside.com 2019 - 2024. All rights reserved.