Hilfe bei Aufgaben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
needphython
User
Beiträge: 11
Registriert: Samstag 10. Mai 2014, 14:56

hi,

ich bin gerade in der siebten aufgabe. hier muss ich eine if schleife anwenden:

Code: Alles auswählen

if( L3[0] < 3):
L4[0] = 0
wie erzeuge ich aber eine liste, die die selbe länge hat wie L3? mit range()?
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Indem du range mit mit dem Parameter L3 L4 zuweist?
Ich muss jetzt schnell weg, eine IF-Schleife programmieren.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@needphython: Du erzeugst nicht erst eine Liste mit der selben Länge sondern Du erstellst eine Liste mit einem Element für jedes Element aus L3. Dann ist die Liste ja automatisch gleich lang wie L3. Syntaktisch drängt sich bei dieser Aufgabe eine „list comprehension” nahezu auf. Ansonsten fängst Du halt mit einer leeren Liste an, und hängst da die entsprechenden Elemente an.

Wichtig: http://if-schleife.de/
BlackJack

So könnte es in Java aussehen:

Code: Alles auswählen

package de.python_forum.blackjack;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // Aufgabe 1:
        List<Double> L1 = new ArrayList<Double>(3);

        // Aufgabe 2:
        Scanner scanner = new Scanner(System.in);
        for (int i = 1; i <= 3; i++) {
            System.out.printf("Zahl %d eingeben: ", i);
            L1.add(scanner.nextDouble());
        }

        // Aufgabe 3:
        List<Double> L2 = new ArrayList<Double>(L1);
        L2.addAll(L1);
        assert L2.size() == 2 * L1.size();
        System.out.println("L2 = " + L2);

        // Aufgabe 4:
        List<Double> L3 = L2.subList(0, 2);
        //noinspection MagicNumber
        L3.add(42.0);
        L3.addAll(L1);
        assert L3.size() == 2 + 1 + L1.size();

        // Aufgabe 5:
        L3.set(1, Math.pow(L3.get(1), 2));

        // Aufgabe 6:
        System.out.println("L3 =");
        for (Double x : L3) System.out.println(x);

        // Aufgabe 7:
        List<Integer> L4 = new ArrayList<Integer>(L3.size());
        for (Double x : L3) L4.add((x < 3) ? 1 : 0);
        assert L4.size() == L3.size();
        System.out.println("L4 = " + L4);

        // Aufgabe 8:
        for (int i = 0; i < 3; i++) {
            int digitCount = L4.size();
            System.out.printf(
                    "Folge von %d 0-1 Werten eingeben:%n", digitCount);
            List<Integer> L5 = new ArrayList<Integer>(digitCount);
            while (L5.size() < digitCount) {
                int j = scanner.nextInt();
                if (j != 0 && j != 1) {
                    System.out.println("Nur 0 oder 1 bitte.");
                } else {
                    L5.add(j);
                }
            }
            assert L5.size() == L4.size();
            boolean isEqual = true;
            int k;
            for (k = 0; k < L4.size(); k++) {
                if (!(isEqual = L4.get(k).equals(L5.get(k)))) break;
            }
            if (isEqual) {
                assert L4.equals(L5);
                System.out.println("Eingabe ist korrekt.");
                break;
            } else {
                System.out.printf(
                        "Eingabe stimmt mindestens an Stelle %d nicht.%n", k);
            }
        }
    }
}
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

BlackJack hat geschrieben:So könnte es in Java aussehen:
Sind das nicht ein bisschen wenig Klassen? :D
Das Leben ist wie ein Tennisball.
BlackJack

@EyDu: Jetzt wo Du es sagst — vielleicht sollte ich mit einem Interface `Aufgabe` anfangen… :-D
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Vergiss die Factory dafür nicht! :twisted:

Wobei ich bei so einer Aufgabe Unittests ja durchaus für sinnvoll hielte... das wäre quasi ideal für TDD :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

BlackJack hat geschrieben:@EyDu: Jetzt wo Du es sagst — vielleicht sollte ich mit einem Interface `Aufgabe` anfangen… :-D
Jepp, mit zu implementierender ``void solve()``-Methode. Zudem ist ein ``UserInputScanner()`` mit ordentlicher Fehlerbehandlung ja wohl das Mindeste, was man erwarten kann... :evil:
BlackJack

@snafu: Den `UserInput` als Interface oder abstrakte Klasse braucht man auch damit man sich zwischen konkreten Implementierungen (`BufferedReader` + `parse*()` oder `Scanner`) entscheiden kann. :-)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Prima, dann ist es jetzt auch schon komplex genug, dass sich die Anfertigung diverser UML-Diagramm lohnt :-)
Das Leben ist wie ein Tennisball.
Antworten