Python 3.x 如何正确地将此字符串转换为整数?
我希望能够读取列表中的值,并验证它是否是字符串中的整数,然后将其转换为整数,删除任何不是整数的内容并返回列表 我已经尝试了isinstance(),但无法使其工作,我还尝试将它们转换为不同的类型,但没有工作Python 3.x 如何正确地将此字符串转换为整数?,python-3.x,Python 3.x,我希望能够读取列表中的值,并验证它是否是字符串中的整数,然后将其转换为整数,删除任何不是整数的内容并返回列表 我已经尝试了isinstance(),但无法使其工作,我还尝试将它们转换为不同的类型,但没有工作 def turnListToInt(lst): for i in lst: if lst[i].isdigit(): int(lst[i]) else: del lst[i] def askQuest
def turnListToInt(lst):
for i in lst:
if lst[i].isdigit():
int(lst[i])
else:
del lst[i]
def askQuestion():
ask = input("How may I help you?")
if ask == "":
print("Thats Not A Valid Question")
elif ask == "Multiply" or "multiply" or "*":
ask = input("What Numbers?")
numbers = ask.split();
numbers = turnListToInt(numbers)
print(float(numbers[0])*float(numbers[1]))
while run:
askQuestion();
我希望list=[“2”,“and”,“5”]变成list=[2,5]。这应该是一个技巧:
def turn_list_to_int(lst):
return [int(v) for v in lst if v.isdigit()]
test = ["2", "and", "5"]
print(turn_list_to_int(test))
输出
[2, 5]
这段代码基本上构造了一个新的列表(使用),其中只包含数字值,并将其转换为整数(忽略所有其他值)
您的解决方案存在多个问题,即:
i
是lst
中的项目,而不是索引。这是因为当您在lst中为i使用符号时,您正在迭代列表。如果需要索引,正确的方法是这样做:for i in range(len(lst))
turnListToInt
中变异lst
,但不返回列表int(lst[i])
是无用的(假设i
是lst
的索引,它不在您的代码中),您正在将lst
的元素转换为int,但您实际上并没有将该值存储在任何位置,例如:lst[i]=int(lst[i])
将更有意义您的
turnListToInt
几乎正确。如文所述,它不会返回任何内容,因此您应该确保返回某些内容
另外,当您在lst中对i执行操作时,i是列表中的每个项目。如果需要索引,可以使用一个方便的Python函数,它返回索引和项
但是在这种情况下,我们不需要索引。我建议构建一个全新的列表,只有当我们有一个数字时,才添加到列表中:
def turnListToInt(lst):
newlist = []
for item in enumerate(lst):
if item.isdigit():
newlist.append(int(item))
return newlist
def askQuestion():
ask = input("How may I help you? ")
if ask == "":
print("Thats Not A Valid Question")
elif ask == "Multiply" or "multiply" or "*":
ask = input("What Numbers? ")
numbers = ask.split();
numbers = turnListToInt(numbers)
print(float(numbers[0])*float(numbers[1]))
while True:
askQuestion();
另一条建议是尝试在交互式控制台(命令行)中运行代码。这样你就可以马上看到结果。此外,在调试代码时,还可以添加大量的print
语句。您可以打印
任何变量或对象,您将获得更多信息
更新
@Rafael正确地指出,在遍历lst时直接编辑它不是一个好主意。巧合的是,我以前的代码版本处理的是“2和5”输入。相反,我创建了一个新列表并附加到它。另一种解决方案是在列表的反向版本上枚举,这样删除的索引就不会混淆 + 1,为你的问题做一些努力,清楚地陈述你预期的结果(但没有达到)。如果你发现任何有用的答案并解决了你的问题,考虑通过点击相应答案旁边的嘀嗒按钮来接受一个。