Python3: Flasche kleine Zahl?

2 Antworten

Das liegt wohl daran, dass du nach dem split eine Liste von Strings vorliegen hast und der Zeichencode von 1 kleiner als der von 5 ist.

Eine Möglichkeit, das ganze zum Funktionieren zu bringen wäre diese:

Zahlen = [float(num) for num in input("Zahlen: ").split(',')]

Achte aber darauf, eine ordentliche Fehlerbehandlung einzubauen, sonst verreckt das ganze z.B. bei einer Eingabe wie dieser:

1.0,-5.5,a
Woher ich das weiß:
eigene Erfahrung
3

ok danke hat geklappt :D

0
3

Ähm ok eine frage hätte ich noch wenn ich jetzt z.B einen Buchstaben eingebe will ich das es unten "Fehlerzeichen: 1" hinschreibt wie kann ich das dann machen?

0
28
@peter12908

Das ginge z.B. so:

try:
    Zahlen=[float(num) for num in input("Zahlen: ").split(',')]
except ValueError as err:
    print(err)

Wenn du jetzt z.B. die Eingabe

1.5,a,7

tätigst, dann gibts folgende Ausgabe:

could not convert string to float: 'a'

U.u. je nachdem wie das System eingestellt ist auch auf deutsch.

Du könntest aber anstelle von

print(err)

z.B. auch

print("Ungültiges Zeichen.")

verwenden.

Wenn du in deiner Meldung das genaue Zeichen angeben willst, wirds etwas "schwieriger".

0

Weil Du so Strings vergleichst und keine Zahlen. Die 1 kommt im Alphabet for der 5 und ist somit kleiner als String.

Wenn Du die Zahlen vergleichen willst, musst Du die Strings erst casten:

Zahlen = input("Zahlen: ").split(',')
Zahlen = [float(i) for i in Zahlen]
# Max
Maximal = max(Zahlen)
print(Maximal)
# Min
Minimal = min(Zahlen)
print(Minimal)

Was ist an meinem Programm falsch?

Wollte ein Programm für Minimum und Maximum machen. Ich finde den Fehler nicht.Ich benutze C.

Hoffe ihr könnt mir helfen.

Vielen Dank

#include<stdio.h>

int main()

{

float max=0, min=0, i = 0, z = 0;

int N;

printf_s("Anzahl der Zahlen:"); //Anzahl einlesen

scanf_s("%d", &N);

printf_s(" Eingegebene Werte:");

min = z;

max = z; 

while (i<N)

{

scanf_s("%f", &z);

if (z>max)

{

z = max;

}

if (z<min)

{

z = min;

}

printf_s(" Eingegebene Werte:");

i++;

}

printf_s(" Maximum:%f",max);

printf_s(" Minimum:%f\n",min);

}

...zur Frage

Welches Enduro bis max. 2500?

Hey, ich möchte mir sehr gerne ein Enduro kaufen. Dieses sollte maximal 160mm Federweg haben und nicht mehr als 2500€ kosten. Ich habe da schon zwei Favoriten: YT Industries Jeffsy Al oder das Canyon SPECTRAL AL 5.0.

...zur Frage

PYTHON - einfacher try/except Block?

Hey allesamt, ich soll für folgenden Code eine Ausnahmebehandlung durchführen (try/except):

Zahlen = [2, 4, 6, 8.1, "Zahl"]

Summe = 0

for Zahl in Zahlen:

Summe += Zahl

print Summe

Nun, ich weiß, dass die Zeile 4 (Summe += Zahl), sobald Zahl in der for-Schleife zu "Zahl" kommt, den Code zum Abstürzen bringt. Ich weiß auch, dass es sich hier um einen TypeError handeln muss, da das Summe bilden sowohl für int als auch für floats funktioniert, "Zahl" jedoch ein String ist.

Nun habe ich folgende Aufgabe:

(c) Fangen Sie den Fehler mit einer Ausnahmebehandlung ab. Dabei sollen nur Fehler, die in der in (a) gefundenen Programmzeile (also Zeile 4) auftreten, abgefangen werden. Code, der nach der fehlerhaften Codezeile kommt, soll nur ausgeführt werden, wenn kein Fehler aufgetreten ist.

Ich habe jetzt schon viel herumprobiert, scheitere allerdings beim letzten Punkt. So wie ich das verstehe, soll ich mittels try/except eben das Programm trotz Fehler weiterlaufen lassen können, allerdings eben soll das "print Summe", da es sich ja nach der fehlerhaften Codezeile befindet nicht ausgeführt werden.

Mein Code sieht so aus:

Zahlen = [2, 4, 6, 8.1, "Zahl"] 

Summe = 0 

try:

  for Zahl in Zahlen:

    Summe += Zahl

    print Summe

except TypeError:

  print "Falscher Typ! Nur Integer oder Float zulaessig!"

Die Ausgabe in der Konsole sieht so aus:

1

3

6

10.1

Falscher Typ! Nur Integer oder Float zulaessig!

Das Programm stürzt also trotz Fehler nicht ab (immerhin etwas), allerdings wird bis das Programm zu "Zahl" kommt die Summe gebildet. Und die soll ja, so wie ich das verstehe, nur gebildet werden, wenn es im ganzen Programm zu keinem Fehler kommt.

Ich verstehe es also so:

1 Fehler im Programm bringt mir lediglich die Ausgabe "Falscher Typ! Nur Integer oder Float zulaessig!"

Kein Fehler im Programm bewirkt, dass ich als Ausgabe jeweils die gebildete Summe bekomme.

Wie kann ich mein Programm mit einfachen Mitteln (try, except, for-Schleifen, if-else usw.) so umschreiben, dass es genau das tut was ich glaube, dass es tun soll?

Hoffe die Frage war nicht zu lang haha, vielen Dank im Vorhinein! LG

...zur Frage

Wie realisiere ich eine Funktion, die eine Zufallszahl zurückgibt(c++)?

Hallo, eine Funktion int myRandomNumber(int min,int max) soll eine zufällige Zahl zwischen int min und int max (einschließlich den Grenzen!) zurückgeben... wie macht man das auf einfache Art und Weise?

...zur Frage

Könnt ihr mit mal in Python3 helfen?

Hallo erstmal. Ich habe eine Funktion in Python3 programmiert die mir alle Primzahlen von 2 bis n ausgibt. Bis 7 hat es geklappt:

primzahlen(7)
2
3
5
7

aber dann kam das:

primzahlen(10)
2
3
5
7
9

9? Könnt ihr mir bitte sagen welchen Fehler ich gemacht habe. Hier ist der Programmcode den ich geschrieben hab:

def primzahlen(ende):
    if ende > 2:
        print(2)
    for Zahl in  range(2, ende):
        for Teiler in range(2, ende-1):
            if Zahl  % Teiler == 0:
                break
            else:
                print(Zahl)
                break

Danke schonmal :-)

...zur Frage

was bedeuten die noten mit komma?

z.b. 1.0 ist eine 1 iCH will wissen was genau die zahlen sind glatt oder + oder-

1.0= 1.1= 1.2= 1.3= 1.4= 1.5= 1.6= 1.7= 1.8= 1.9= 2.0= 2.1= 2.2= 2.3= 2.4= 2.5= 2.6= 2.7= 2.8= 2.9= 3.0= 3.1= 3.2= 3.3= 3.4= 3.5= 3.6= 3.7= 3.8= 3.9= 4.0= 4.1= 4.2= 4.3= 4.4= 4.5= 4.6= 4.7= 4.8= 4.9= 5.0= 5.1= 5.2= 5.3= 5.4= 5.5= 5.6= 5.7= 5.8= 5.9= 6.0= KANN DAS JEMAND KOPIEREN UND MIR SAGEN WIE DIE NOTEN AUSSEHEN MIT + UND - ODER GLATTß

...zur Frage

Was möchtest Du wissen?