我的 python 脚本在生成错误时,即使所有变量都是 int

我在 (in module 'average') 行中有一个错误return如您所见,我已经尝试用int().


这是代码:


g_grade_list = []

k_grade_list = []


def g_sum():

    s = 0

    for i in g_grade_list:

        s += int(i)


    return s


def k_sum():

    s = 0

    for i in k_grade_list:

        s += int(i)


    return s


def average():

    g_grade = input("Geben Sie Ihre Grundnoten ein.")

    k_grade = input("Geben Sie Ihre Klausurnoten ein.")

    wert = input("Geben Sie die Wertigkkeit der Klausurnoten ein.(in %)")


    g_grade_list.extend(g_grade.split(','))

    g_grade_avg = int((g_sum() * len(g_grade_list)))


    k_grade_list.extend(k_grade.split(','))

    k_grade_avg = int((k_sum() * len(k_grade_list)))


    return ((k_grade_avg * int(int(wert) / int(100)) + (g_grade_avg * int(1 - (int(wert / int(100)))))))


average()

注意:输入始终是完整的数字 (1,2,3...)。


错误代码:


  return ((k_grade_avg * int(int(wert) / int(100)) + (g_grade_avg * int(1 - (int(wert / int(100)))))))

TypeError: unsupported operand type(s) for /: 'str' and 'int'


慕桂英546537
浏览 90回答 1
1回答

qq_花开花谢_0

罪魁祸首是wert。您正在此处初始化变量:wert = input("Geben Sie die Wertigkkeit der Klausurnoten ein.(in %)")并在这里使用它:return ((k_grade_avg * int(int(wert) / int(100)) + (g_grade_avg * int(1 - (int(wert / int(100)))))))让我指出失败的具体操作:wert / int(100)您可能已经发现:该input函数返回一个字符串,这就是wert / 100失败的原因。您正试图将一个字符串 ( wert) 除以一个数字。如果您将此特定代码段包裹起来wert,int那么只要您提供有效数字,如果您提供其他内容(如abc),您的程序就会崩溃。我想指出,如果此特定行 ( return ...) 较短,您很可能会更早地发现此错误。您可能会考虑将各种操作分成多行,以免忽视大局。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python