【问题标题】:Python Loop UnderstandingPython循环理解
【发布时间】:2018-05-20 22:29:10
【问题描述】:

我正在自学 Python,我已经被这个循环问题困住了一段时间。我编写了一个脚本来每小时提取有关股票价格的数据,但是对于每个小时的数据,我手动创建了新变量来保存我的新数据。

  • 是否有一个循环可以为我执行此操作,而无需为每次运行创建新的变量行?
  • 该循环能否创建一个具有不同名称的文本文件? (例如:Txtfile1.txt、Txtfile2.txt...)

下面附上代码示例:

 R = requests.get("https://api.website.com/v1/....")
 data = R.json()

for x in data:
       ticker = x['symbol']
       cost = x['price_usd']

print (ticker + "\t:" + cost)
with open('Marketcap.txt', 'w') as outfile:
    json.dump(data, outfile, indent=2)

time.sleep(3600)


R2 = requests.get("https://api.website.com/v1/....")
data2 = R2.json()

for y in data2:

        ticker2 = y['symbol']
        cost2 = y['price_usd']

print(ticker2  +":\t" + cost2)

with open('Marketcap2.txt', 'w') as outfile2:
    json.dump(data2, outfile2, indent=2)

time.sleep(3600)

谢谢。

【问题讨论】:

  • 或许你可以使用一个列表
  • 而且你可以重复使用相同的变量名...
  • 欢迎来到 Stack Overflow。我想帮忙,但我真的不明白你想做什么。我建议您暂时搁置“循环”之类的概念,并更详细地描述您的程序的目的。你说你正在下载股票数据。那么你想用这些数据做什么呢?把这个过程想象成盖房子。在您担心是使用锤子还是螺丝刀之前,您先从蓝图开始。 for 循环是我们作为程序员使用的众多工具之一。它们就像房屋建筑商的锤子、螺丝刀或锯子。
  • 但您需要一个整体蓝图,然后才能决定适合程序各个部分的工具。
  • 说到这里,我建议你学习一下函数。他们将帮助您编写易于重用的代码,就像您所询问的那样。

标签: python loops design-patterns output


【解决方案1】:

您可以将迭代重复的内容包含在 for 循环中(因此您将获得一个嵌套的 for 循环)

如果您想要运行数据提取程序的次数设定为 12 次,则使用此次数:

r = requests.get("https://api.website.com/v1/....")
data = r.json()

for i in range(12):
    for x in data:

        ticker = x['symbol']
        cost = x['price_usd']

        print(ticker + ":\t", cost)
        # define a new name for our variable:
        name = 'Marketcap{}.txt'.format(i)

        with open(name, 'w') as outfile:
            json.dump(data, outfile, indent=2)

    time.sleep(3600)

如果您想“永远”使用它,有一个名为 itertools 的内置库可以让您无限期地使用 for 函数进行递增:

from itertools import count

for i in count(0):
    for x in data:

        ticker = x['symbol']
        cost = x['price_usd']

        print(ticker  + ":\t", cost)
        name = 'Marketcap{}.txt'.format(i)

        with open(name, 'w') as outfile:
            json.dump(data, outfile, indent=2)

    time.sleep(3600)

【讨论】:

  • 哇,我从您的回复中学到了很多东西。我必须练习理解“For 循环”并了解更多关于 Itertools 的信息。有人告诉我学习语言的最佳方式是通过目标驱动的项目,这是我的一个。感谢您的回复
猜你喜欢
  • 2017-09-11
  • 2013-10-15
  • 2013-09-10
  • 2023-03-11
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多