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)
t = tuple(int(x.strip()) for x in input("insert tuple (0 to stop): ").split(','))
b。您需要将while循环测试表达式修改为:
while len(t):
我所做的假设:
您希望用户键入逗号分隔的值(因为列表中只有一个值元组对我来说没有意义。如果我遗漏了什么,请纠正我)
如果用户没有输入任何值(例如,按下了Enter键),则希望结束while循环李>
如果我的假设正确,请尝试以下方法:
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,)与int值0进行比较。 这就是您的版本无法按预期工作的原因。
我还添加了两个打印,以便更好地理解代码的作用
一旦我们了解了错误的性质以及如何修复它,我想问您为什么在这种情况下使用元组。
直接使用int是个好主意吗
我们还可以减少行数并删除重复的代码,下面是另一个迭代:
您的代码中有两个问题(据我所知):
a。您需要首先将用户输入(将是字符串)转换为元组。您可以使用:
b。您需要将
while
循环测试表达式修改为:我所做的假设:
如果我的假设正确,请尝试以下方法:
相关问题 更多 >
编程相关推荐