Python 向列表中添加元组
我有一个简单的程序问题;我的目标是将元组添加到列表中,由用户输入。当用户输入0时,while循环应该中断 这是我的代码:Python 向列表中添加元组,python,python-3.x,list,while-loop,tuples,Python,Python 3.x,List,While Loop,Tuples,我有一个简单的程序问题;我的目标是将元组添加到列表中,由用户输入。当用户输入0时,while循环应该中断 这是我的代码: sList=[] x=tuple(input("insert tuple (0 to stop): ")) while x!=int(0): sList.append(x) x=tuple(input("insert tuple (0 to stop): ")) print (sList) 问题是while循环从未停止过,即使我输入0,错误在哪里?请阅读以下
sList=[]
x=tuple(input("insert tuple (0 to stop): "))
while x!=int(0):
sList.append(x)
x=tuple(input("insert tuple (0 to stop): "))
print (sList)
问题是while循环从未停止过,即使我输入0,错误在哪里?请阅读以下几行,以了解如何修复代码中的错误:
sList=[]
x=tuple(input("insert tuple (0 to stop): "))
print("x contains: " + str(x))
print("x type is: " + str(type(x)))
while int(x[0])!=int(0):
print("x contains: " + str(x))
print("x type is: " + str(type(x)))
sList.append(x)
x=tuple(input("insert tuple (0 to stop): "))
print (sList)
您正在将字符串(0,)与int值0进行比较。
这就是您的版本无法按预期工作的原因。我还添加了两个打印,以便更好地理解代码的作用 一旦我们了解了错误的性质以及如何修复它,我想问您为什么在这种情况下使用元组。
直接使用int是个好主意吗 我们还可以减少行数并删除重复的代码,下面是另一个迭代:
sList=[]
x = None
while x != 0:
print("x contains: " + str(x))
print("x type is: " + str(type(x)))
x = input("Insert 0 to stop: ")
if (x != None) and x.isdigit():
x = int(x)
if x != 0:
sList.append(x)
print (sList)
您的代码中有两个问题(据我所知): a。您需要首先将用户输入(将是字符串)转换为元组。您可以使用:
t = tuple(int(x.strip()) for x in input("insert tuple (0 to stop): ").split(','))
b。您需要将while
循环测试表达式修改为:
while len(t):
我所做的假设:
def check_int(s):
if len(s) == 0:
return False
if s[0] in ('-', '+'):
return len(s) > 0 and s[1:].isdigit()
return s.isdigit()
sList=[]
x=tuple(int(x.strip()) for x in input("insert tuple (0 to stop): ").split(',') if check_int(x.strip()))
while len(x):
sList.append(x)
x=tuple(int(x.strip()) for x in input("insert tuple (0 to stop): ").split(',') if check_int(x.strip()))
print(sList)
为什么
元组
等于0?输入
返回字符串。您希望tuple('string')
做什么?循环永远不会结束,因为input
返回字符串,所以您需要int(input())