Какая польза от globals () в этом коде? - PullRequest
0 голосов
/ 26 сентября 2018
d={}
for x in range(5):
        globals()['int%s' % x] = int(input("Enter the marks of the students: "))
a = int0 + int1 + int2 + int3 + int4
print ("The average marks are ", a/5)

Я не понимаю использование словаря, globals() и ['int%s' % x] в этом коде.Я очень плохо знаком с Python и программированием в целом, поэтому было бы очень признательно, если бы кто-то мог ответить на это очень простым языком.

Большое вам спасибо.

1 Ответ

0 голосов
/ 26 сентября 2018

Не волнуйтесь, это извращенный и худший код для изучения любого языка, который я видел ... Я имею в виду, если вы изучаете первые принципы, не смотрите на это слишком долго прямо сейчас.Когда вы получите больше практики, просмотрите это.Это всего лишь совет.В любом случае, я объясню вам построчно:

d={}

'''
here declares a variable with name d, and saves an empty dictionary to it... 
I don't know why, because it is never used
'''

for x in range(5):
    globals()['int%s' % x] = int(input("Enter the marks of the students: "))

'''
this is a loop that will be repeated 5 times, globals() is a dictionary 
of all the variables in the scope that are alive with in the program... 
so, globals()['int%s' % x] is creating a new key-value,
for example {'int0': 4}. It is a way to dynamically create variables, so, 
the x will have the values [0,1,2,3,4], that's why the variables
will have the names int0, int1, int2, int3, int4.
Finally, it ask to the user to type a number, 
and this number will be stored in one of those variables, 
then the maths:
'''


a = int0 + int1 + int2 + int3 + int4
'''sum all the inputs from the user'''
print ("The average marks are ", a/5) 
#divide it by 5

Возможный способ добиться того же, но немного более обобщенного:

total=0
numberOfMarks = 5
for x in range(numberOfMarks):
  mark = input("Enter the marks of the students: ")
  while(not mark or not mark.isdigit()):
    print("please, enter a number value representin the mark")
    mark = (input("Enter the marks of the students: "))

  total += int(mark)

print ("The average marks are ", total/numberOfMarks)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...