【问题标题】:Printing variables with incrementing suffixes打印带有递增后缀的变量
【发布时间】:2013-07-18 03:41:24
【问题描述】:

通过查看代码,我正在尝试做的事情会更容易理解:

suffix = 1
prefix1="success"
prefix2="success"
prefix3="success"
prefix4="success"
while suffix<5:
    temp = "prefix"+str(suffix)
    print temp
    suffix+=1

所以我要做的是打印 prefix1、prefix2 等的值,这是“成功”而不是“prefix1”、“prefix2”等。我完全理解为什么我的代码是这样工作的,但我想知道是否有办法打印变量前缀+后缀的值。

【问题讨论】:

  • 这绝不是一个好主意。改用列表或字典;这就是他们的目的。
  • 是的,我已经为此目的使用了列表和字典。感谢您的帮助。

标签: variables python-2.7 increment


【解决方案1】:

我认为使用 dict 会更有意义:

d = { 
      'prefix1' : 'success',
      'prefix2' : 'success',
      'prefix3' : 'success',
      'prefix4' : 'success'
    }

for i in range(1,5):
    temp = "prefix%s" % i
    print d[temp]

【讨论】:

  • 我认为这并没有回答我的问题,但我刚刚发现了我正在寻找的 eval() 函数。如果我更改: temp = "prefix"+str(suffix) to temp = eval("prefix"+str(suffix)) 它可以工作并多次打印“success”,无论如何感谢您提供一种更快的循环方式 if我将其更改为: for i in range(1,6): print eval("prefix%s" % str(i))
  • 也许使用 dict 会满足您的需求?所以如果temp"prefix1",你想得到它的值"success"
  • @FraserHislop ...和you really don't want to go playing with eval(),尤其是如果您“刚刚听说”。
  • 所以只要我不 eval() 用户输入 eval() 是安全的吗?
  • @FraserHislop 如果您提出问题,您不知道如何安全地使用eval()。无论如何,这几乎总是错误的解决方案,但如果你坚持,你可以改用ast.literal_eval()
猜你喜欢
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
相关资源
最近更新 更多