我正在使用Python 3。
我需要从输入中获取三个值(用空格分隔)。值是整数,字符串和整数
考虑到字符串可以有多个单词。
如果我设置两个单词则不起作用,因为每个单词都是一个值。
我的代码是:
list_a = {}
list_b = []
for i in range(4):
input_values = input("Press {}, {} and {}".format("id1", "name", "id2"))
id1, name, id2 = input_values.split()
list_a["id1"] = id1
list_a["name"] = name
list_a["id2"] = id2
list_b.append(dict(list_a))
print(list_b)
如果我的输入类似于1 name_ok 0,则可以。但是如果我的输入类似于1个意大利面ok 0,则不起作用,因为预期有3个值,而不是4个。
我怎么能考虑两个整数值之间的任何字符都是变量名?
抱歉英语xD
答案 0 :(得分:2)
您不一定知道id2
是第三个参数;它是最后一个参数。您可以使用extended iterable unpacking将所有干预参数收集到一个元组中。一旦你掌握了中间参数的元组,就可以将它们重新组合在一起。
id1, *names, id2 = input_valores.split()
list_a["id1"] = int(id1)
list_a["name"] = " ".join(names)
list_a["id2"] = int(id2)
这有点有损,因为它将名称中的任意空格缩小到单个空格;例如,您从1
和"foo bar"
获得2
,"1 foo bar 2"
和"1 foo bar 2"
的相同结果。如果重要,可以使用拆分两次:
# This is the technique alluded to in Ignacio Vazquez-Abrams' comment.
id1, rest = input_valores.split(None, 1)
name, id2 = rest.rsplit(None, 1)
rsplit
与split
类似,但从另一端开始。在这两种情况下,None
参数指定默认拆分行为(任意空格),参数1
将结果限制为单个拆分。结果,在第一个和最后一个空间用于分裂;中间空间得以保留。
答案 1 :(得分:2)
您可以使用切片。
args = input('Enter ID, name, and second ID').split()
id1 = int(args[0])
id2 = int(args[-1])
name = " ".join(args[1:-1])
答案 2 :(得分:1)
你可以使用python的切片符号来实现这个
input_values = input("Press {}, o {} e o {}".format("id1", "name", "id2"))
listSplit = input_values.split()
id1 = listSplit[0]
name = join(listSplit[1:-1])
id2 = listSplit[-1]
def join(arr):
newStr = ""
for i in arr:
newStr += i + " "
return newStr[:-1]
其中id1是第一个单词,name是第一个索引和最后一个连接成一个字符串之间的所有内容,第三个参数实际上是最后一个单词。
希望有所帮助。
答案 3 :(得分:1)
这将有效:
var start = Date.now(),
diff,
minutes,
seconds;