【问题标题】:How do I loop and update variables in Python [closed]如何在 Python 中循环和更新变量 [关闭]
【发布时间】:2021-09-30 17:21:51
【问题描述】:

我正在制作一个经济模拟器。我试图不断循环并获得/亏损,但它没有显示更新的值。它只是显示默认值和变量。我不太擅长数学变量。我已经相当成功地循环了它,尽管我认为它每次循环时都会重置变量。

import time

money = 2
moneyfo = "{:.2f}".format(money)

boughtw = 0
woodsalea = 1 
woodinv = 0
woodprice = (woodsalea * 2)
woodpricefo = "{:.2f}".format(woodprice)
amntw = 0
buywcost = 0

foodinv = 0
foodsalea = 1
foodprice = (woodsalea * 2)
foodpricefo = "{:.2f}".format(foodprice)
amntf = 0
buyfcost = 0

def start():
  print ("Products are wood food and stone")
  print ("""Prices are wood """ + woodpricefo + " food " + foodpricefo + " stone")

def buysale():
  bos = input("""Buy, Sell or Check Inventory?
""")
  if bos == ("Buy"):
    btyp = input("""Wood, Food, Or Stone?
""")
    if btyp == ("Wood"):
      amntw = input("""0-100
""")
      buywcost = float(amntw) * woodprice
  buywcostfo = "{:.2f}".format(buywcost)
  print ("That will be $" + buywcostfo + " you have " + str(money) + " dollars would you still like to buy?")
  buywyn = input("""Yes Or No
""")
  if buywyn == ("Yes") and money >= buywcost:
    print("You have bought Wood")
    boughtw = amntw
    boughtw = woodinv
    boughtw * woodprice - money
    woodsalea = boughtw
    print (woodsalea) 
    print (boughtw) 
    print (money)
    start()
    buysale()
  if bos == ("Sell"):
    styp = input("""Wood, Food, Or Stone
""")
    if styp == ("Wood"):
      amntw = input("""0-100
""")

start()
buysale()

【问题讨论】:

  • 你在哪里循环?我只看到If 语句(尽管我猜它们是“循环的”?)——另外,你能修复缩进吗(你的引号在第二行)。
  • 你有这行boughtw * woodprice - money,计算确实更新了任何变量。 @BruceWayne 这是一个递归函数 ;-) 但我不确定它是否完整,如果用户出售或打算购买并拒绝,它不会用于另一个循环
  • 运行此代码时出现错误。您必须修复代码或添加错误的详细信息。
  • 但是得到一个错误。你应该修复它,这样我就不会了。
  • 我已经在 repl.it 和本地 PyCharm 下运行它。两次都出现同样的错误(我选择了Buy,然后选择了Food)。另外:我不必运行它,您所做的事情违反了 Python 语法规则。

标签: python simulation


【解决方案1】:

我很确定您的问题在于以下几点:

    boughtw = amntw
    boughtw = woodinv
    boughtw * woodprice - money
    woodsalea = boughtw

所以要了解每个人的作用: 开头:buyw = 0,amntw的值取决于用户输入,woodinv = 0,woodprice = 2,money = 2,woodsalea = 1

第一行将amntw(用户输入)的值赋给buyw (0)。现在buyw 具有用户输入的值。 第二个like 将woodinv (0) 的值分配给buyw(用户输入)。现在,buyw 的值再次为 0。 第 3 行计算值 -2,但不将其分配给任何东西。 第 4 行将 buyw (0) 的值分配给 woodsalea (1)。 woodsalea 现在的值为 0。

我很确定你的意思更像是:

boughtw = float(amntw)
woodinv = woodinv + boughtw
money = money - boughtw * woodprice
woodsalea = boughtw //not entirely sure about this line. I'm not sure what you mean to track with woodsalea

您的代码还有很多其他问题。如果人们没有完全按照您的期望输入或尝试遵循您尚未实施的路径(例如购买 Wood 以外的任何东西),它将崩溃,但以上内容至少应该解释为什么从一次运行到下一个。

【讨论】:

  • 也许值得注意的是,像woodinv = woodinv + boughtw 这样一个变量被另一个值修改的行可以更简洁地重写为woodinv += boughtw
  • 值得注意的是,是的。但我猜测 OP 对于一般编程,特别是 Python 来说是非常新的,所以我试图通过添加他们可能还没有看到的语法来避免造成混淆。
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 2019-03-05
  • 2016-08-15
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
相关资源
最近更新 更多