вопрос новичка: как объединить "функцию" и "фразу" - PullRequest
0 голосов
/ 30 мая 2020

извините. Я просто запускаю python (вероятно, прошло около двух дней)

def grade(point):
    result = ""
    if point >= 90:
        result = "A"
    elif point >= 80:
        result = "B"
    else:
        result = "C"
    return result

subject_ls = ["English", "Science","math"]
score_ls = [80,90,100]

for data in score_ls:
    result = grade(data)
    for data2 in subject_ls:
        result2 = subject
    print("{} {}".format(result2,result),end="\t") 

, когда я запускаю это. out is [math B math A math A] Я просто хочу [Engli sh B, Science A, math A] Что мне не хватает? пожалуйста ответьте мне

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Вы можете упростить свой код и использовать для этой цели zip:

for (subject,score) in zip(subject_ls,score_ls):
    print("{} {}".format(subject,grade(score)),end="\t") 

OUT: English B       Science A       math A
1 голос
/ 30 мая 2020

Первая проблема заключается в том, что вы назначаете result2 = subject, но 'subject' не определен.

Во-вторых, второй для l oop выполняется 3 раза для каждой темы, что вам не подходит.

Простой способ сделать это - использовать while и установить счетчик, а затем распечатать результат.

i=0
while i< len(subject_ls):
  subject= subject_ls[i]
  result=grade(score_ls[i])
  print("{} {}".format(subject,result),end="\t") 
  i+=1

Это более короткие способы сделать это, но поскольку вы новичок в python возможно, вы поймете это лучше!

0 голосов
/ 30 мая 2020

не требует вложенности for циклов и subject не определен в вашем коде.

def grade(point):
    result = ""
    if point >= 90:
        result = "A"
    elif point >= 80:
        result = "B"
    else:
        result = "C"
    return result
subject_ls = ["English", "Science", "math"]
score_ls = [80, 90, 100]

for i,subject in enumerate(subject_ls):
    print("{} {}".format(subject, score_ls[i]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...