• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Zadanie suma par cyfr

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
532 wizyt
pytanie zadane 8 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)
zamknięte 8 października 2022 przez Ichbinda

W inpucie ma być liczba, w której cyfry są rozdzielone spacjami a w outpucie liczba par cyfr, których suma wynosi 11 każdą cyfrę można wykorzystać wyłącznie raz w celu utworzenia pary. 

np.

input:1 3 8 8

output:1

poniewaz 8+3 =11

ja mam taki problem, że gdy w inpucie jest liczba np.2 3 8 9 9 to w outpucie jest 3 problem jest tylko wlasnie z cyframi 2 i 9 w innych pzypadkach dziala poprawnie. Dodam, że dopiero zaczynam nauke programowania.

liczba= input()
lst = (liczba.split())
b=0
a=1
while a==1:
 
   if ("2" and "9" in lst): 
     lst.remove("2"and"9")
   
     b=b+1
   elif("3" and "8" in lst):   
       lst.remove("3"and"8")
       b=b+1
   elif("5" and "6" in lst): 
       lst.remove("5"and"6")
       b=b+1
   elif("4" and "7" in lst):      
       lst.remove("4"and"7")
       b=b+1   
   else:
       a = 0
print(b)

 

komentarz zamknięcia: rozwiązanie zadania
komentarz 8 października 2022 przez Great Stary wyjadacz (12,660 p.)

Prostszym sposobem będzie policzenie wszystkich cyfr i zsumowanie minimów par, które tworzą 11:

numbers = list(map(int, input().split()))
pairs = [[1, 10], [2, 9], [3, 8], [4, 7], [5, 6]]
count = 0
for first, second in pairs:
    count += min(numbers.count(first), numbers.count(second))
print(count)
komentarz 8 października 2022 przez Ichbinda Nowicjusz (230 p.)
dzięki

1 odpowiedź

0 głosów
odpowiedź 8 października 2022 przez Nelson89 Dyskutant (7,720 p.)

Cześć,

to co mi się rzuciło w oczy, to sposób w jaki usuwasz elementy z listy.

Wyrażenie lista.remove(<element listy> and <element listy> ) nie sprawia, że zostaną usunięte dwa elementy, tylko jeden element.

Operator and zwróci Ci tylko jeden element stojący po lewej lub po prawej stronie tego wyrażenia, w zależności jakie wartości logiczne przyjmują obiekty stojące po lewej i po prawej stronie,

Przykładowo w Pythonie pusty ciąg znaków -> "" przyjmuje zawsze wartość False, pusta lista przyjmuje wartość False, 0 przyjmuje wartość False. Także po użyciu tego operatora dostajesz w zwrocie drugi element gdy oba elementy są prawdziwe (True) lub ten, który przyjmuje wartość fałszu.

Także jak chcesz usunąć dwa elementy z listy to musisz dwa razy użyć funkcji remove.

Pozdrawiam,

 Nelson

komentarz 8 października 2022 przez Ichbinda Nowicjusz (230 p.)
próbowałem w ten sposób, i wyskakiwał błąd :list.remove(x): x not in list
komentarz 8 października 2022 przez Nelson89 Dyskutant (7,720 p.)

to możesz sprawdzić czy jest jeszcze ten element w liście.

if x in my_list:
    my_list.remove(x)

 

Podobne pytania

0 głosów
2 odpowiedzi 1,131 wizyt
pytanie zadane 5 stycznia 2020 w Python przez MsMaciek123 Pasjonat (24,760 p.)
0 głosów
2 odpowiedzi 1,449 wizyt
pytanie zadane 8 maja 2021 w C i C++ przez fsfxvcxv Obywatel (1,160 p.)
+1 głos
1 odpowiedź 483 wizyt

93,443 zapytań

142,434 odpowiedzi

322,691 komentarzy

62,805 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...