为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英546537 2022-11-29 17:14:15
我在 (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 sdef k_sum():    s = 0    for i in k_grade_list:        s += int(i)    return sdef 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'
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

罪魁祸首是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) 除以一个数字。

如果您将此特定代码段包裹起来wertint那么只要您提供有效数字,如果您提供其他内容(如abc),您的程序就会崩溃。

我想指出,如果此特定行 ( return ...) 较短,您很可能会更早地发现此错误。您可能会考虑将各种操作分成多行,以免忽视大局。


查看完整回答
反对 回复 2022-11-29
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号