请建议在python中使用typeerror
我的问题是“编写函数用户打印列表中的偶数”。我们必须要求用户输入列表。我遇到“类型错误:在字符串格式化过程中未转换所有参数”。如果我错了,请提供帮助请建议在python中使用typeerror,python,Python,我的问题是“编写函数用户打印列表中的偶数”。我们必须要求用户输入列表。我遇到“类型错误:在字符串格式化过程中未转换所有参数”。如果我错了,请提供帮助 def even_no(x): a = x.split() new_list = [] for i in a: if i % 2 == 0: new_list.append(i) input_no = input("Ent
def even_no(x):
a = x.split()
new_list = []
for i in a:
if i % 2 == 0:
new_list.append(i)
input_no = input("Enter number sequence: ")
print(even_no(input_no))
您忘了将数字从
str
转换为int
,map
可用于此操作。此外,您没有返回列表
def even_no(x):
a = map(int, x.split())
new_list = []
for i in a:
if i % 2 == 0:
new_list.append(i)
return new_list
input_no = input("Enter number sequence: ")
print(even_no(input_no))
执行示例:
Enter number sequence: 10 20 30
[10, 20, 30]
%
也用于字符串格式化,并且由于拆分
方法属于字符串
,它还返回一个字符串
,因此解释器尝试格式化它
更改行:
if i % 2 == 0:
到
您的代码应该可以工作
作为旁注,您的函数不会打印任何内容,因为
函数甚至没有返回值您的缩进值有点小,所以我修复了它,您也忘记了使用返回值
。我修复了所有这些,包括类型错误
。代码如下:
def even_no(x):
a = x.split()
new_list = []
for i in a:
if int(i) % 2 == 0:
new_list.append(i)
return new_list
input_no = input("Enter number sequence: ")
print(even_no(input_no))
需要注意的几个问题。
前面已经提到了第一个问题,即需要将字符串转换为整数。
第二个是用下面的一行:
输入\否=输入(“输入数字顺序:”)。
当我测试时,函数“even_no”不会在上面的行作为全局变量出现的情况下执行。
为了克服这个问题,我在下面的代码中使用了tkinter和一个类。
请注意:这允许用户在输入字段中输入一个或多个数字。每个数字应以空格分隔。只能使用数字。
如果输入了偶数,它们将被打印到python shell中的列表中。如果没有输入偶数,则将打印空列表。如果输入了非数字字符,则会处理值错误,以指导用户使用正确的输入方法
import tkinter as tk
from tkinter import Tk, messagebox
import tkinter.filedialog
from tkinter import Tk, Label, Button
from tkinter import *
class Control(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.controller = self
self.shared_data = {
"input_no": tk.StringVar(),
}
self.title('Even')
self.entry = Entry(self, textvariable=self.shared_data["input_no"])
self.entry.pack()
self.enterbutton = tk.Button(self, text='Enter',
command=(self.even_no)
)
self.enterbutton.pack()
def even_no(self):
try:
user_input = self.shared_data["input_no"].get()
a = user_input.split()
new_list = []
for i in a:
if int(i) % 2 == 0:
new_list.append(int(i))
print(new_list)
except ValueError:
print('Invalid Entry. Please enter numbers only. \n'
'Please make sure that each number is separated by a space.')
Control1 = Control()
Control1.mainloop()
虽然我同意返回部分,但我在OP的代码上没有看到任何缩进错误。这是真的,没有缩进问题,但是缩进中的间距有点偏,所以我修复了它。也许我应该更好地澄清它。我将编辑它。
import tkinter as tk
from tkinter import Tk, messagebox
import tkinter.filedialog
from tkinter import Tk, Label, Button
from tkinter import *
class Control(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.controller = self
self.shared_data = {
"input_no": tk.StringVar(),
}
self.title('Even')
self.entry = Entry(self, textvariable=self.shared_data["input_no"])
self.entry.pack()
self.enterbutton = tk.Button(self, text='Enter',
command=(self.even_no)
)
self.enterbutton.pack()
def even_no(self):
try:
user_input = self.shared_data["input_no"].get()
a = user_input.split()
new_list = []
for i in a:
if int(i) % 2 == 0:
new_list.append(int(i))
print(new_list)
except ValueError:
print('Invalid Entry. Please enter numbers only. \n'
'Please make sure that each number is separated by a space.')
Control1 = Control()
Control1.mainloop()