Внимание, вопрос: вложенная функция не принимает значения из основной.
Код:
# -*- coding: cp1251 -*-
class table:
def __init__(self, name, group, geometry, EC):
self.name = name
self.group = group
self.geometry = geometry
self.EC = EC
name = "Родион"
group = "БО921ТВР"
geometry_mark = 3
EC_mark = 5
str_n = table(name, group, geometry_mark, EC_mark)
size = 1
data = []
for i in range(size):
data.append([name, group, geometry_mark, EC_mark])
def print_header():
print ("_______________________________________"
print ("| Экзаменационные оценки студентов |"
print ("---------------------------------------"
print ("| Имя | Группа | Геометрия | ЭВМ |"
print ("---------------------------------------"
#Нигде не используется
def print_string():
str_n = table(name, group, geometry_mark, EC_mark)
print ("|", str_n.name, "|", str_n.group, "| ", str_n.geometry, " | ", str_n.EC, " |"
print ("---------------------------------------"
def print_table():
print_header()
i = 0
while (i<size):
name = data[0]
group = data[1]
geometry_mark = data[2]
EC_mark = data[3]
#Функция print_string
str_n = table(name, group, geometry_mark, EC_mark)
print ("|", str_n.name, "|", str_n.group, "| ", str_n.geometry, " | ", str_n.EC, " |"
print ("---------------------------------------"
#Конец функции print_string
i += 1
print_table()
print ("1) Добавить строчку\n2) Выход"
choice = input()
while (choice != '2':
print ('Введите имя'
name = input()
print ('Введите группу'
group = input()
print ('Введите оценку по геометрии'
geometry_mark = input()
print ('Введите оценку по ЭВМ'
EC_mark = input()
size += 1
new_str_n = [name, group, geometry_mark, EC_mark]
data.append(new_str_n)
print_table()
print ("1) Добавить строчку\n2) Выход"
choice = input()
Порядок такой:
1) Вводим данные
2) Вносим в массив
3) Вызываем функцию
4) Обновляем данные
5) (Внутри функции) Вызываем функцию
6) Выводим данные
Проблема: выводятся не обновленные в функции print_table данные, а те, которые ввели в последнем цикле.
Примечательно, что если функцию не вызывать, а тупо переписать её содержимое (как представлено в коде), то тогда всё работает. Такое ощущение, что находящиеся данные в print_table попросту нельзя использовать дальше, как будто они не сохраняются.
Код:
# -*- coding: cp1251 -*-
class table:
def __init__(self, name, group, geometry, EC):
self.name = name
self.group = group
self.geometry = geometry
self.EC = EC
name = "Родион"
group = "БО921ТВР"
geometry_mark = 3
EC_mark = 5
str_n = table(name, group, geometry_mark, EC_mark)
size = 1
data = []
for i in range(size):
data.append([name, group, geometry_mark, EC_mark])
def print_header():
print ("_______________________________________"
print ("| Экзаменационные оценки студентов |"
print ("---------------------------------------"
print ("| Имя | Группа | Геометрия | ЭВМ |"
print ("---------------------------------------"
#Нигде не используется
def print_string():
str_n = table(name, group, geometry_mark, EC_mark)
print ("|", str_n.name, "|", str_n.group, "| ", str_n.geometry, " | ", str_n.EC, " |"
print ("---------------------------------------"
def print_table():
print_header()
i = 0
while (i<size):
name = data[0]
group = data[1]
geometry_mark = data[2]
EC_mark = data[3]
#Функция print_string
str_n = table(name, group, geometry_mark, EC_mark)
print ("|", str_n.name, "|", str_n.group, "| ", str_n.geometry, " | ", str_n.EC, " |"
print ("---------------------------------------"
#Конец функции print_string
i += 1
print_table()
print ("1) Добавить строчку\n2) Выход"
choice = input()
while (choice != '2':
print ('Введите имя'
name = input()
print ('Введите группу'
group = input()
print ('Введите оценку по геометрии'
geometry_mark = input()
print ('Введите оценку по ЭВМ'
EC_mark = input()
size += 1
new_str_n = [name, group, geometry_mark, EC_mark]
data.append(new_str_n)
print_table()
print ("1) Добавить строчку\n2) Выход"
choice = input()
Порядок такой:
1) Вводим данные
2) Вносим в массив
3) Вызываем функцию
4) Обновляем данные
5) (Внутри функции) Вызываем функцию
6) Выводим данные
Проблема: выводятся не обновленные в функции print_table данные, а те, которые ввели в последнем цикле.
Примечательно, что если функцию не вызывать, а тупо переписать её содержимое (как представлено в коде), то тогда всё работает. Такое ощущение, что находящиеся данные в print_table попросту нельзя использовать дальше, как будто они не сохраняются.