如何让 raw_input 提示符自动从之前的列表中读取一个字符串?
How to make the raw_input prompt automatically read a string from a previous list?
我创建了一个这样的列表:
names=["Tom", "Dick", "Harry"]
我想在 raw_input
.
的提示中使用这些列表元素
例如,我希望下一行为:a=raw_input("What is Tom's height?")
除了在这种形式中它是硬编码的,因此 a
的提示将始终要求 Tom
'高度。
我希望代码更灵活,这样对列表元素的任何更改都会在提示中自动更新。例如,如果我将列表更改为 names=["Matthew", "Sarah", "Jane"]
,我希望 a
的提示询问 Matthew
的高度,以便它始终读取列表的第一个元素。
怎样才能让列表中的元素发生变化时提示自动变化?
names=["Tom", "Dick", "Harry"]
a = raw_input("What is %s's height?" % names[0])
这个问题归结为:我如何拥有一个可以根据程序中的变量而改变的字符串,而不仅仅是一个文字字符串?
在 python 中,您可以通过几种方式完成此操作。
一种直观的方法是将字符串连接(添加)在一起。
看起来像这样
names=["Tom", "Dick", "Harry"]
a=raw_input("What is " + names[0] + "'s height?")
另一种(更好的)方法是使用 str.format() syntax(也称为 "new-style string formatting")
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.
如果要提示用户输入列表中的每个名称:
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)))
我创建了一个这样的列表:
names=["Tom", "Dick", "Harry"]
我想在 raw_input
.
例如,我希望下一行为:a=raw_input("What is Tom's height?")
除了在这种形式中它是硬编码的,因此 a
的提示将始终要求 Tom
'高度。
我希望代码更灵活,这样对列表元素的任何更改都会在提示中自动更新。例如,如果我将列表更改为 names=["Matthew", "Sarah", "Jane"]
,我希望 a
的提示询问 Matthew
的高度,以便它始终读取列表的第一个元素。
怎样才能让列表中的元素发生变化时提示自动变化?
names=["Tom", "Dick", "Harry"]
a = raw_input("What is %s's height?" % names[0])
这个问题归结为:我如何拥有一个可以根据程序中的变量而改变的字符串,而不仅仅是一个文字字符串?
在 python 中,您可以通过几种方式完成此操作。
一种直观的方法是将字符串连接(添加)在一起。
看起来像这样
names=["Tom", "Dick", "Harry"]
a=raw_input("What is " + names[0] + "'s height?")
另一种(更好的)方法是使用 str.format() syntax(也称为 "new-style string formatting")
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.
如果要提示用户输入列表中的每个名称:
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)))