-2

我正在尝试以下问题,但我不知道出了什么问题。有人可以帮我解决吗?

java=10
python=10
sql=5
unix=5
javascript=5
framework=10
i=eval(input("Enter courses done in a list"))
if sum(i)>=30:
    print("eligible since the score is", sum(i))
else:
    print("Not eligible since the score is",sum(i))

但我收到以下错误,

Traceback (most recent call last):
  File "E:/Python Notes/Python Programs/Eligible for placement.py", line 8, in <module>
    if sum(i)>=30:
TypeError: unsupported operand type(s) for +: 'int' and 'str'

提前致谢!!

4

3 回答 3

2

假设用户输入是由空格分隔的课程名称字符串,那么:

courses = {"java":10,
           "python":10,
           "sql":5,
           "unix":5,
           "javascript":5,
           "framework":10}
user_input = input("Enter courses done in a list")
course_names = user_input.split()
i = sum([courses.get(course,0) for course in course_names])
if i >= 30:
    print("eligible since the score is", i)
else:
    print("Not eligible since the score is",i)

于 2019-05-27T15:01:56.880 回答
1

您可以尝试将字符串设置为变量名

java=10
python=10
sql=5
unix=5
javascript=5
framework=10
i=input("Enter courses done in a list:").split() # ['python', 'java', 'sql']
sum_ = 0

for item in i:
    sum_ += int(vars()[item]) # "use string like a variable"

if sum_>=30:
    print("eligible since the score is ", sum_)
else:
    print("Not eligible since the score is ",sum_)

输出:

Enter courses done in a list:python java sql
Not eligible since the score is  25
于 2019-05-27T15:31:01.500 回答
0

我忍不住开口说你不应该只是eval()原始的用户输入。看起来您在自己的提示下手动输入了字符串或存储字符串的变量,因为错误消息说,在第 8 行 ( if sum(i)>=30:) 上,+运算符不能同时使用字符串和整数同时。例如,sum('foo', 1)给出相同的错误。

查看https://stackoverflow.com/help/minimal-reproducible-example。这对 OP 和响应者一样好。

于 2019-05-27T15:06:41.303 回答