Сделайте, чтобы переменная обновила свое значение на основе возвратов - PullRequest
1 голос
/ 20 апреля 2020

У меня возникла проблема, потому что мне приходилось много раз запускать одну и ту же функцию, и я хочу записать итоговую сумму за каждый раз, когда она была запущена.

def add(word):
    total_hello=0
    total_world=0
    if word=="hello":
       total_hello+=1
    elif word=="world":
       total_world+=1

    print(total_hello)
    print(total_world)
    return total_hello, total_world

hello=0
world=0
hello, world+=add("hello")
hello, world+=add("world")
hello, world+=add("hello")
print(hello)
print(world)

Создание переменной hello и попытка ее + = возврат не работает. Есть ли что-нибудь простое, что я могу сделать, чтобы добавить результаты эффективно?

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Вы можете напрямую использовать hello и world внутри функции.

hello=0
world=0
def add(word):
    global hello, world
    if word=="hello":
       hello+=1
    elif word=="world":
       world+=1

    print(hello)
    print(world)

add("hello")
add("world")
add("hello")

print(hello)
print(world)
1 голос
/ 20 апреля 2020

Приветствие переменной и попытка сделать ее + = возврат не работает. Есть ли что-нибудь простое, что я могу сделать, чтобы эффективно добавить возвраты?

Вы не можете просто добавить элементы кортежа, возвращаемые вашей функцией, к элементу кортежа с левой стороны. У вас есть следующие опции:

  1. Переменные (total_hello и total_world) являются локальными для вашей функции, и они назначаются каждый раз, когда вы вызываете вашу функцию на 0. Попробуйте переместить их за пределы вашей функции и сделать их глобальными. Их можно использовать для хранения количества переменных.
# Code in Module 1:
total_hello=0
total_world=0

def add(word):
    global total_hello, total_world
    if word=="hello":
       total_hello+=1
    elif word=="world":
       total_world+=1

    return total_hello, total_world


# Code in Module 2:
# from Module1 import *
add("hello")
add("world")
hello, world = add("hello")
print(hello)
print(world)

См. этот ответ для более подробной информации о Pythoni c.

Использование аргументов по умолчанию в Python:

def add(word, total_world=[0], total_hello=[0]):
    if word == "hello":
       total_hello[0] += 1
    elif word == "world":
       total_world[0] += 1

    return total_hello[0], total_world[0]


add("hello")
add("world")
hello, world = add("hello")
print(hello)
print(world)
...