GPA Calculator, Как мне добавить значения из списка в переменную?

Существует два варианта операций с поперечными потоками.

Control.InvokeRequired Property 

, а второй - использовать

SynchronizationContext Post Method

Control.InvokeRequired полезен только при работе с элементами управления, унаследованными от Control класс, в то время как SynchronizationContext можно использовать в любом месте. Некоторая полезная информация относится к следующим ссылкам:

Пользовательский интерфейс Cross Thread Update | .Net

Пользовательский интерфейс Cross Thread Update с использованием SynchronizationContext | .Net

1
задан Aldmonjoy 17 January 2019 в 04:03
поделиться

2 ответа

Вместо создания цикла if else просто используйте словарь. Здесь я суммировал оценку, соответствующую буквенной оценке, а затем разделил ее на число предметов. В результате вы получите взвешенный средний балл.

In [3]: def get_grade(grade_list):
            grade_dict = dict(zip(['A', 'A-', 'B+', 'B-', 'C+', 'C-'],
                                  [4, 3.7, 3.3, 3, 2.7, 2.3, 2, 1.7]))
            return sum([grade_dict[i] for i in grade_list])/(len(grade_list))

In [4]: get_grade(['A', 'A', 'A', 'B+'])
Out[4]: 3.825
0
ответ дан mamun 17 January 2019 в 04:03
поделиться

Вы пытаетесь добавить grades, поэтому после 6 итераций это будет список из 6 значений. Поскольку вы добавляете gtotal для каждой итерации, ваш код будет работать, когда вы удалите функцию append.

Код:

print ("GPA Calculator")

gtotal = 0
ctotal = 0

grades = []
for i in (range(6)):
    grades = input("Enter Grades in Order Here: ")
    if grades == "A":
        gtotal += 4
    elif grades == "A-":
        gtotal += 3.7
    elif grades == "B+":
        gtotal += 3.3
    elif grades == "B":
        gtotal += 3
    elif grades == "B-":
        gtotal += 2.7
    elif grades == "C+":
        gtotal += 2.3
    elif grades == "C":
        gtotal += 2
    elif grades == "C-":
        gtotal += 1.7

print(gtotal)

Выход:

GPA Calculator
24
Enter Grades in Order Here: A
Enter Grades in Order Here: A
Enter Grades in Order Here: A
Enter Grades in Order Here: A
Enter Grades in Order Here: A
Enter Grades in Order Here: A
0
ответ дан Naveen 17 January 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: