我尝试制作一款简单的投资游戏"。但由于某种原因,可变现金在"投资"之后仍然显示1000。我也想让这个游戏持续下去。就像玩家可以继续玩它并获得/失去现金一样。该计划如下!谢谢!
import sys
import random
print "INVEST"
cash = 1000
highlow = ["h", "l"]
percentrand = random.randint(1,99)
percentup = percentrand/100 + 1
percentdown = percentrand/100 - 1
randomhighlow = random.choice(highlow)
print "You have 1000$ on you now."
investquit = raw_input("Invest or quit?")
if investquit.lower() == "quit":
quit()
elif investquit.lower() == "invest":
if randomhighlow == "h":
cash == cash*percentup
print str(cash) + ",up," + str(percentrand) + "%"
if randomhighlow == "l":
cash == cash*percentdown
print str(cash) + ",down," + str(percentrand) + "%"
答案 0 :(得分:2)
您没有多次运行程序的循环。此外,在python 2.7中,分割两个int将产生另一个int,而不是float。这就是你的主要问题所在,因为这导致百分比上升或下降总是为1.
所以你应该这样做:
percentrand = float(random.randint(1,99))
percentup = percentrand/100.0 + 1
percentdown = percentrand/100.0 - 1
randomhighlow = random.choice(highlow)
答案 1 :(得分:1)
你有几个问题。其他答案和评论涵盖了大部分内容,但我将它们合并为一个答案。
首先,当你应该使用浮点除法时,你正在使用整数除法。这可以在Python 3.x中使用,但是因为你已经标记了它2.7它是不同的:
percentup = percentrand/100.0 + 1
与向下相同,除了你减去1而不是从 1减去:
percentdown = 1 - percentrand/100.0
然后你使用错误的运算符来分配cash
:
cash = cash*percentup
你发布它时代码中的缩进不正确。
最后,你需要一个循环来继续玩:
while True:
这似乎有效:
import sys
import random
print "INVEST"
cash = 1000
highlow = ["h", "l"]
while True:
percentrand = random.randint(1,99)
percentup = percentrand/100.0 + 1
percentdown = 1 - percentrand/100.0
randomhighlow = random.choice(highlow)
print "You have $" + str(cash) + " on you now."
investquit = raw_input("Invest or quit?")
if investquit.lower() == "quit":
break
elif investquit.lower() == "invest":
if randomhighlow == "h":
cash = cash*percentup
print str(cash) + ",up," + str(percentrand) + "%"
if randomhighlow == "l":
cash = cash*percentdown
print str(cash) + ",down," + str(percentrand) + "%"
print 'Thanks for playing!'
答案 2 :(得分:0)
Double equals =
是一个比较运算符,而单个等于cash = cash * percentup
则是赋值。
在您的情况下,您想要更新现金值
while cash > 0:
percentrand = float(random.randint(1,99))
[.. rest of code ...]
(相应地百分比)。
让游戏无限游戏,或者直到某个条件(即现金> 0)你可以在while循环中包围整个游戏,例如
percentrand = float(random.randint(1,99))
编辑:正如Ryan正确提到的那样,您希望using System;
namespace Includes
{
public static class VariablesGlobales
{
public static int MaximoLicenciasAsignar
{
get { return Convert.ToInt32(Convert.ToString(Environment.GetEnvironmentVariable("MAXIMO_LICENCIAS_ASIGNAR"))); }
}
}
}
确保您的除法结果不是整数。