Python 函数使用困难
我已经修复了输入错误,但在试图让程序正确地引发ValueError时仍然存在问题。这是我的密码Python 函数使用困难,python,function,Python,Function,我已经修复了输入错误,但在试图让程序正确地引发ValueError时仍然存在问题。这是我的密码 def grade(mark): if not isinstance(mark, int): raise TypeError ("Invalid input, please enter an integer") if mark != range (0, 101): raise ValueError ("Invalid input, Please ente
def grade(mark):
if not isinstance(mark, int):
raise TypeError ("Invalid input, please enter an integer")
if mark != range (0, 101):
raise ValueError ("Invalid input, Please enter an integer between 0
and 101")
if mark >= 60:
return "D"
elif mark >= 50:
return "M"
elif mark >= 40:
return "P"
else:
return "F"
print (grade(mark=int(input("Please enter the students mark: "))))
这是控制台返回的内容
J:\Python\python.exe K:/Jetbrains/.PyCharmCE/config/scratches/scratch_21.py
Please enter the students mark: 10
Traceback (most recent call last):
File "K:/Jetbrains/.PyCharmCE/config/scratches/scratch_21.py", line 19, in
<module>
print (grade(mark=int(input("Please enter the students mark: "))))
File "K:/Jetbrains/.PyCharmCE/config/scratches/scratch_21.py", line 10, in
grade
raise ValueError ("Invalid input, Please enter an integer between 0 and
101")
ValueError: Invalid input, Please enter an integer between 0 and 101
Process finished with exit code 1
J:\Python\Python.exe K:/Jetbrains/.PyCharmCE/config/scratch/scratch_21.py
请输入学生分数:10
回溯(最近一次呼叫最后一次):
文件“K:/Jetbrains/.PyCharmCE/config/scratches/scratch_21.py”,第19行,in
打印(分数=整数(输入(“请输入学生分数:”))
文件“K:/Jetbrains/.PyCharmCE/config/scratch/scratch_21.py”,第10行,in
等级
raise VALUERROR(“输入无效,请输入介于0和之间的整数
101")
ValueError:输入无效,请输入一个介于0和101之间的整数
进程已完成,退出代码为1
您需要交换int和input。然后,您需要使用print命令将返回的输出打印到控制台
def grade(mark):
if not isinstance(mark, int):
raise ValueError ("Invalid input, please enter an integer")
if mark >= 60:
return "D"
elif mark >= 50:
return "M"
elif mark >= 40:
return "P"
else:
return "F"
print(grade(mark=int(input("Please enter the students mark: "))))
您需要交换int和input。然后,您需要使用print命令将返回的输出打印到控制台
def grade(mark):
if not isinstance(mark, int):
raise ValueError ("Invalid input, please enter an integer")
if mark >= 60:
return "D"
elif mark >= 50:
return "M"
elif mark >= 40:
return "P"
else:
return "F"
print(grade(mark=int(input("Please enter the students mark: "))))
您需要使用
int
切换input
,并添加print
新行:
print (grade(mark=int(input("Please enter the students mark: "))))
您需要使用
int
切换input
,并添加print
新行:
print (grade(mark=int(input("Please enter the students mark: "))))
只需添加,您不需要指定
grade(mark=int(input())
定义函数时,您还可以设置第一个给定参数为mark
只需添加,您不需要指定grade(mark=int(input()))
在定义函数时,您还设置了第一个给定参数将是标记
让我们把这一行分开:
grade(mark=input(int("Please enter the student's mark: ")))
我们可以将其改写为:
query_text = "Please enter the student's mark: "
number = int(query_text)
input_from_user = input(number)
grade(mark=input_from_user)
看看第二行和第三行,这可能不是你想要的。在用户输入之前,为什么要将query\u text
转换为int
?您希望看到的是:
query_text = "Please enter the student's mark: "
input_from_user = input(query_text)
number = int(input_from_user)
grade(mark=number)
将被重新写入一行,如下所示:
grade(mark=int(input("Please enter the student's mark: ")))
有一条建议: 在将用户输入传递到
grade()
函数之前,您试图将其转换为int
。这不一定是一个坏主意,但是检查int是在grade()
函数中进行的。因此,grade()
函数不会捕捉到错误的用户输入,这是您的意图
在grade()
函数中写入检查的更好方法是:
def grade(mark):
try:
mark = int(mark)
except ValueError:
raise ValueError("Invalid input, please enter an integer.")
if mark >= 60:
return "D"
.
.
.
它可能看起来没什么不同,但现在您可以传入int
或str
,只要它可以成功转换为int
。(这就是你想要的,对吗?)
现在,对grade的调用可以简化为:
grade(mark=input("Please enter the student's mark: "))
在调用
grade()
的过程中不需要int
强制转换,让我们把这一行分开:
grade(mark=input(int("Please enter the student's mark: ")))
我们可以将其改写为:
query_text = "Please enter the student's mark: "
number = int(query_text)
input_from_user = input(number)
grade(mark=input_from_user)
看看第二行和第三行,这可能不是你想要的。在用户输入之前,为什么要将query\u text
转换为int
?您希望看到的是:
query_text = "Please enter the student's mark: "
input_from_user = input(query_text)
number = int(input_from_user)
grade(mark=number)
将被重新写入一行,如下所示:
grade(mark=int(input("Please enter the student's mark: ")))
有一条建议: 在将用户输入传递到
grade()
函数之前,您试图将其转换为int
。这不一定是一个坏主意,但是检查int是在grade()
函数中进行的。因此,grade()
函数不会捕捉到错误的用户输入,这是您的意图
在grade()
函数中写入检查的更好方法是:
def grade(mark):
try:
mark = int(mark)
except ValueError:
raise ValueError("Invalid input, please enter an integer.")
if mark >= 60:
return "D"
.
.
.
它可能看起来没什么不同,但现在您可以传入int
或str
,只要它可以成功转换为int
。(这就是你想要的,对吗?)
现在,对grade的调用可以简化为:
grade(mark=input("Please enter the student's mark: "))
在调用
grade()
时不需要int
casting,您交换了input
和int
的顺序,使其成为int(input(“请输入学生分数”)
而不是input(int(“…”)
它不允许我输入任何数据,只要我点击runi,它就会将数据打印到控制台。我交换了数据,虽然没有任何错误,但它不会打印到控制台。您还必须打印评分的结果您交换了输入的顺序和int
使其成为int(输入(请输入学生的分数:)
而不是输入(int(“…”)
它不允许我输入任何数据,只要我点击Run,它就会将数据打印到控制台。我交换了数据,虽然没有任何错误,但它不会打印到控制台。您还必须打印评分结果谢谢,这解决了我的问题,这解决了我的问题