Python 函数使用困难

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

我已经修复了输入错误,但在试图让程序正确地引发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 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,它就会将数据打印到控制台。我交换了数据,虽然没有任何错误,但它不会打印到控制台。您还必须
打印
评分结果
谢谢,这解决了我的问题,这解决了我的问题