Python投资程序错误

时间:2018-03-20 17:56:36

标签: python python-2.7

我尝试制作一款简单的投资游戏"。但由于某种原因,可变现金在"投资"之后仍然显示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) + "%"

3 个答案:

答案 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"))); } } } } 确保您的除法结果不是整数。