我创建了一个这样的列表:
names=["Tom", "Dick", "Harry"]
我想在raw_input
的提示中使用这些列表元素。
例如,我希望下一行阅读:a=raw_input("What is Tom's height?")
,但在此格式中,它是硬编码的,以便a
的提示始终要求Tom
的高度。
我希望代码更灵活,以便在提示符中自动更新list元素的任何更改。例如,如果我将列表更改为names=["Matthew", "Sarah", "Jane"]
,我希望a
的提示要求Matthew
的高度,以便它始终读取列表的第一个元素。
如何在列表中的元素发生变化时自动更改提示?
答案 0 :(得分:1)
这个问题归结为:我如何根据程序中的变量来改变字符串,而不仅仅是文字字符串?
在python中,你可以通过几种方式实现这一目标。
一种直观的方法是将字符串连接(添加)。
看起来像这样
names=["Tom", "Dick", "Harry"]
a=raw_input("What is " + names[0] + "'s height?")
另一种(更好)的方法是使用str.format() syntax(也称为"新式字符串格式")
names=["Tom", "Dick", "Harry"]
a=raw_input("What is {}'s height?".format(names[0]))
这种方法有优点(我会推荐它),因为它更灵活:你使用的参数(在这种情况下名称[0])不必是字符串。在这种情况下,两种方法都有效,因为名称无论如何都是字符串。但是,例如,如果您希望字符串的可变部分为int,则第一种方法不起作用,而第二种方法将int转换为字符串,它将按预期工作。
还有其他方法可以进行字符串格式化:C-style string formatting with %,从C语言中借用sprintf,尽管str.format()通常被认为是替代它。
为了完整起见,我们只有final brand-new way to do string formatting,但它仅适用于Python 3.6。
答案 1 :(得分:0)
names=["Tom", "Dick", "Harry"]
a = raw_input("What is %s's height?" % names[0])
答案 2 :(得分:0)
如果要提示用户输入列表中的每个名称:
names=["Tom", "Dick", "Harry"]
for name in names:
a = raw_input("What is {}'s height? ".format(name))
修改强>
将结果存储在列表中(根据评论中的请求):
names=["Tom", "Dick", "Harry"]
results = []
for name in names:
results.append(raw_input("What is {}'s height? ".format(name)))