【问题标题】:Generator expressions and Google App Engine生成器表达式和 Google App Engine
【发布时间】:2012-06-02 01:48:40
【问题描述】:

我正在尝试为网络应用程序(通过 GAE)创建一个“迭代器”,该应用程序将一个“模板”字符串、两个整数(创建一个范围)和一个单词列表作为输入。用户将在他们想要迭代数字的字符串中插入一个“#”,并在他们想要迭代单词的字符串中插入一个“@”。

输入:

template string: "Person#Likes@"
starting integer: 1
ending integer: 3
list of words: "Apples, Bananas, Oranges"

输出:

Person1LikesApples
Person1LikesBananas
Person1LikesOranges
Person2LikesApples
Person2LikesBananas
Person2LikesOranges
Person3LikesApples
Person3LikesBananas
Person3LikesOranges

当用户单击标题为“下一步”或类似内容的提交按钮时,我希望输出显示在结果文本框中。踢球者是我希望输出仅在 Person1 第一次单击按钮时显示项目。然后,他们第二次单击它时,仅显示 Person2 的项目,依此类推。

我使用生成器编写了一个简单的 Python 小程序,但在将其整合到我的 Google App Engine 应用程序中时遇到了问题。

这是我的功能:

def g(f, text, lower, upper, list):
    for num in range(int(lower),int(upper)+1):
        yield f(text.replace('#', str(num)), list)

def f(text, list):
    for i in list:
        print text.replace('@', i)

及其他代码:

if text and lower and upper and words:  
    result = g(f, words, lower, upper, list)
    self.render_iterator(result=next(result))

(^当我填写其他值时,此代码在我的结果文本框中返回“None”,但当我稍微摆弄一下时,它确实将其识别为生成器表达式)

还有其他我想念的方法吗?我应该改用 GQL 和 Google 数据存储吗?如果您需要查看我的更多代码,请告诉我。

谢谢!

【问题讨论】:

    标签: python google-app-engine iterator google-cloud-datastore generator


    【解决方案1】:

    我建议先弄清楚如何在 App Engine 之外执行此操作。这是一个非常简单的编程问题,但如果你无法弄清楚,尝试在 Web 应用程序中进行操作只是一种折磨。对解决方案感到满意后,您可以将其应用到 App Engine。

    【讨论】:

      【解决方案2】:

      f() 没有返回值,因此返回None。你需要改变

      print text.replace('@', i) 
      

      return text.replace('@', i)
      

      【讨论】:

      • 现在我得到的只是作为输出的单词列表。
      • 不确定这是否有帮助,但我在 GAE 日志中收到此消息:WARNING 2012-06-02 03:26:54,550 py_zipimport.py:139] 无法打开 zipfile /Library/Frameworks/ Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info:IOError:[Errno 13]文件不可访问:'/Library/Frameworks/Python.framework /Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2010-12-28
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      相关资源
      最近更新 更多