Python 3.x Python 3:如何将用户输入更改为循环中的整数?
我希望我的程序要求用户输入一个3D点,它应该一直提示用户,直到用户输入点(0,0,0)。我在这个循环中遇到的问题是由语句“point=[int(y)for y in input().split()]”引起的。每当循环到达该语句时,它就会退出。我试着把这句话放在不同的地方,但不管我把它放在哪里,它都会做同样的事情。如果我把语句取出来,循环就工作了。我需要将用户输入的坐标更改为整数,因此我不能忽略该语句。我还可以做些什么来将坐标更改为整数,而不会影响循环Python 3.x Python 3:如何将用户输入更改为循环中的整数?,python-3.x,Python 3.x,我希望我的程序要求用户输入一个3D点,它应该一直提示用户,直到用户输入点(0,0,0)。我在这个循环中遇到的问题是由语句“point=[int(y)for y in input().split()]”引起的。每当循环到达该语句时,它就会退出。我试着把这句话放在不同的地方,但不管我把它放在哪里,它都会做同样的事情。如果我把语句取出来,循环就工作了。我需要将用户输入的坐标更改为整数,因此我不能忽略该语句。我还可以做些什么来将坐标更改为整数,而不会影响循环 point = "" pointList =
point = ""
pointList = [[]] #pointList will be a list that contains lists
while True:
if point == "0,0,0":
break
else:
point = input("Enter a point in 3D space:")
point = [int(y) for y in input().split()]
pointList.append(point)
print(pointList)
发件人:
如果未指定sep或sep为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果的开头或结尾将不包含空字符串
简言之,它在不包含逗号的空格上拆分。你要找的是str.split(',')我建议让它对用户输入更加健壮。虽然正则表达式不应该被过度使用,但我认为它非常适合这种情况——您可以为所有可能允许的分隔符定义正则表达式,然后可以使用正则表达式的
split
方法。将点表示为元组也更为常见。循环可以直接包含条件。此外,条件可能与给它一个带零的点稍有不同。(示例中未显示。)请尝试以下代码:
#!python3
import re
# The separator.
rexsep = re.compile(r'\s*,?\s*') # can be extended if needed
points = [] # the list of points
point = None # init
while point != (0, 0, 0):
s = input('Enter a point in 3D space: ')
try:
# The regular expression is used for splitting thus allowing
# more complex separators like spaces, commas, commas and spaces,
# whatever - you never know your user ;)
x, y, z, *rest = [int(e) for e in rexsep.split(s)]
point = (x, y, z)
points.append(point)
except:
print('Some error.')
print(points)
程序是抛出异常,还是只是退出?如果抛出异常,类型和回溯很重要;请把它们寄出去。