我正在尝试在python中创建一个文本冒险游戏。我使用randint创建一个介于0和2之间的数字,当我使用if语句获取随机数并将生物群系变量分配给生物群系类型时,它会采用变量的原始版本并将其用作生物群系。 / p>
#Defines game()
print ('''You are in a %s biome.'''%(biome))
biome='placeholder'
import random
trees=random.randint(0,50)
biomes=random.randint(0,2)
animals=random.randint(0,3)
wolves=random.randint(0,5)
if biomes == "0":
biome='Forest'
if biomes == "1":
biome='Taiga'
if biomes == "2":
biome='Mountain'
print ('''You are in a %s biome.'''%(biome))
答案 0 :(得分:4)
biomes
是int值。 "0"
是字符串值。
这两个值永远不会相等。
>>> 0 == "0"
False
使用int literal。
if biomes == 0:
biome = 'Forest'
elif biomes == 1:
biome = 'Taiga'
elif biomes == 2: # else
biome = 'Mountain'
我建议您使用random.choice作为其他建议。简单,易读。
>>> random.choice(['Forest', 'Taiga', 'Mountain'])
'Mountain'
>>> random.choice(['Forest', 'Taiga', 'Mountain'])
'Mountain'
>>> random.choice(['Forest', 'Taiga', 'Mountain'])
'Taiga'
答案 1 :(得分:2)
random.randint(...)
返回一个整数。您正在将值与字符串进行比较。
>>> type(randint(0, 2))
<type 'int'>
您的if
语句应改写为 -
if biomes == 0:
biome='Forest'
elif biomes == 1:
biome='Taiga'
else:
biome='Mountain'
PS - 您不需要三个if
语句,因为如果值为0
,则它永远不会是1
或{{ 1}},所以不需要检查条件。您可以改为使用2
结构。
答案 2 :(得分:1)
这是一种更容易理解的方式:
from random import choice
biomes = ['Forest', 'Tiaga', 'Mountain']
biome = choice(biomes)
然后,如果生物群落的数量增加或减少,您不必担心更新随机数的范围,并且不能完全使您的if
语句正确...
答案 3 :(得分:1)
您需要与0
进行比较,而不是"0"
if biome == 0:
。
但是,使用random.choice
可以简化此操作,从列表中随机选择生物群系。
biome = random.choice(['Forest', 'Taiga', 'Mountain'])
并完全取消if
。
答案 4 :(得分:0)
我认为你应该尝试使用if语句biome == 1而不是biome ==&#34; 1&#34;和biome == 2和biome == 3相同。
答案 5 :(得分:0)
那是因为你正在将一个整数值与一个字符串(它永远不会相等)进行比较。这将有效:
import random
trees=random.randint(0,50)
biomes=random.randint(0,2)
animals=random.randint(0,3)
wolves=random.randint(0,5)
# Compare biomes (which is an integer) to another integer
if biomes == 0:
biome='Forest'
# Use elif for multiple comparisons like that
elif biomes == 1:
biome='Taiga'
# Use an else here because the only other option is 2
else:
biome='Mountain'
print ('''You are in a %s biome.'''%(biome))
另请注意,我删除了脚本的第一行和第二行。第一个会被炸毁,因为biome
尚未定义,第二个没有做任何事情。