Do kwadratu czy nie do kwadratu

0

Czesc,

Robie sobie zadanie ze strony codewars i na wejsciu jest losowa lista np a = [4, 3, 9, 7] jesli ktorys element z listy moze byc wynikiem potegowania to output ma byc podstawa potegowania a jesli element nie moze byc wynikiem potegowania to jest podnoszony do potegi. Biorac powyzsza liste: input: [4, 3, 9 , 7] output: [2, 9, 3, 49]

Jakies podpowiedzi jak dodac elementy listy z obu instrukcji?

Podnoszenie kazdego elementu do kwadratu:

def quare_or_square_root(arr):
    arrSecond = []
    for number in arr:
        arrSecond.append(number * 2)
    return print(arrSecond)
quare_or_square_root([1, 100, 3])

Jesli chodzi o wyniki pierwiastkowania elementow to mam cos takiego:
```python
def quare_or_square_root(arr):
    arrSecond = []
    for number in arr:
        check = (number ** (1 / 2))
        arrSecond.append(check)
    return print(arrSecond)
quare_or_square_root([1, 100, 3])

Ma ktos moze z Was jakies podpowiedzi jak to polaczyc aby finalnie utworzyc jedna liste(jak output powyzej)? Iterowac kazdy element z listy po kolei z dwoma if'ami? Jesli tak to w jaki sposob moge te dwie opcje wrzucic do jednej listy?

Dzieki i pozdrawaim!
2
kudatyxd napisał(a):

Czesc,

jesli ktorys element z listy moze byc wynikiem potegowania

Skrót myślowy trochę, ale rozumiem, o co chodzi.

A czemu robisz dwie listy, nie możesz zrobić czegoś takiego?

list = [4, 3, 9, 7] 

def square_or_square_root(list):
	return [int(n ** 0.5) if int(n ** 0.5) ** 2 == n else n * n for n in list]

print(square_or_square_root(list)) # [2, 9, 3, 49]

1 użytkowników online, w tym zalogowanych: 0, gości: 1