Flächeninhalt und Umfang von Kreisen,Rechtecke,Quadrate,Dreiecke

Du hast eine Idee für ein Projekt?
MG2003
User
Beiträge: 1
Registriert: Mittwoch 14. Juni 2017, 12:14

Flächeninhalt und Umfang von Kreisen,Rechtecke,Quadrate,Dreiecke

Beitragvon MG2003 » Mittwoch 14. Juni 2017, 12:18

  1. print("Hallo und guten Tag.")
  2. print ("Sie sind herzlich willkommen bei dem Programm von Herrn XXX und  Herrn XXX. Dieses Programm wird Ihnen das lästige Rechnen von Flächeninhalten und Umfängen beheben. Wir haben folgende Formen im Angebot: Kreise,Rechtecke,Quadrate und Dreiecke. ")
  3.  
  4. a = str(input("Bitte geben Sie ein, welche Form  sie gerne ausgerechnet haben möchten:"))
  5. if a == "Dreieck":
  6.   b = str(input("Möchten sie den Umfang oder Flächeninhalt ausgerechnet haben:"))
  7.   if b == "Umfang":
  8.     q = int(input("Geben Sie bitte die  Kantenlänge der Grundseite ein:"))
  9.     z = int(input("Bitte geben Sie die Kantenlänge für die erste Seite ein: "))
  10.     w = int(input("Bitte geben Sie die Kantenlänge für die zweite Seite ein"))
  11.     Q = q+z+w
  12.     print("Der Umfang ist",Q,"cm groß")
  13.   elif b == "Flächeninhalt":
  14.      r = int(input("Geben  Sie die Höhe ein des Dreiecks:"))
  15.      R = int(input("Geben Sie Kantenlänge  der Grundseite ein:"))
  16.      O = (R/2)*r
  17.      print("Der Flächeninhalt ist",O,"cm² groß.")
  18.   else:
  19.     print("Unzulässige Eingabe!Achten Sie auf Groß- und Kleinschreibung!")
  20.  
  21. elif a == "Rechteck":
  22.   b = str(input("Möchten sie den Umfang oder Flächeninhalt ausgerechnet haben:"))
  23.   if b == "Umfang":
  24.     q = int(input("Geben Sie bitte die erste Kantenlänge ein: "))
  25.     z = int(input("Geben Sie bitte die zweite Kantenlänge ein: "))
  26.     Q = 2*q+2*z
  27.     print("Der Umfang ist",Q,"cm groß")
  28.    
  29.   elif b == "Flächeninhalt":
  30.      q = int(input("Geben Sie bitte die erste Kantenlänge ein: "))
  31.      z = int(input("Geben Sie bitte die zweite Kantenlänge ein: "))
  32.      O = q*z
  33.      print("Der Flächeninhalt ist",O,"cm² groß.")
  34.   else:
  35.     print("Unzulässige Eingabe!Achten Sie auf Groß- und Kleinschreibung!")
  36.  
  37. elif a == "Quadrat":
  38.   b = str(input("Möchten sie den Umfang oder Flächeninhalt ausgerechnet haben:"))
  39.   if b == "Umfang":
  40.     q = int(input("Geben Sie bitte die erste Kantenlänge ein: "))
  41.     Q = q+q+q+q
  42.     print("Der Umfang ist",Q,"cm groß")
  43.    
  44.   elif b == "Flächeninhalt":
  45.      q = int(input("Geben Sie bitte die erste Kantenlänge ein: "))
  46.      O = q*q
  47.      print("Der Flächeninhalt ist",O,"cm² groß.")
  48.   else:
  49.     print("Unzulässige Eingabe!Achten Sie auf Groß- und Kleinschreibung!")
  50.  
  51. elif a == "Kreis":
  52.   b = str(input("Möchten sie den Umfang oder Flächeninhalt ausgerechnet haben:"))
  53.   if b == "Umfang":
  54.     q = int(input("Geben sie bitte den Radius an : "))
  55.     Q = 2*3.14159265359*q
  56.     print("Der Umfang ist",Q,"cm groß")
  57.    
  58.   elif b == "Flächeninhalt":
  59.      q = int(input("Geben Sie bitte den Radius ein: "))
  60.      O = 3.14159265359*(q*q)
  61.      print("Der Flächeninhalt ist",O,"cm² groß.")
  62.   else:
  63.     print("Unzulässige Eingabe!Achten Sie auf Groß- und Kleinschreibung!")
  64.      
  65.    
  66.  
  67. else:
  68.     print("Unzulässige Eingabe!Achten Sie auf Groß- und Kleinschreibung!")
Zuletzt geändert von BlackJack am Mittwoch 14. Juni 2017, 12:28, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 6097
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Flächeninhalt und Umfang von Kreisen,Rechtecke,Quadrate,Dreiecke

Beitragvon Sirius3 » Mittwoch 14. Juni 2017, 12:34

@MG2003: `input` liefert bereits Strings, das Umwandeln mit `str` ist also überflüssig. Eingerückt wird immer mit 4 Leerzeichen pro Ebene nicht 2. Variablennamen sollten aussagekräftig sein, a, b, q, z, w, Q oder r sind das alles nicht; man darf auch mehr als einen Buchstaben verwenden. In allen Abschnitten für die verschiedenen Formen wird immer nach "Umfang oder Flächeninhalt" gefragt, das sollte man nur einmal im Code haben.
Außer beim Dreieck werden immer die selben Größen für Umfang und Flächeninhalt abgefragt, das sollte man dann auch nur einmal im Code haben.
Es gibt math.pi, das braucht mal also nicht selbst als Zahl mehrmals in den Code schreiben.

Insgesammt solltest Du anfangen, Code in Funktionen zu schreiben. Als nächsten Schritt könntest Du die Unterschiede der Formen in Datenstrukturen abstrahieren, so dass es einfacher wird, weitere hinzuzufügen. Mit str.lower kann man alles in Kleinbuchstaben umwandeln, dann kommt es nicht so sehr auf die Groß-Kleinschreibung an.
Benutzeravatar
BlackJack
Moderator
Beiträge: 32994
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: Flächeninhalt und Umfang von Kreisen,Rechtecke,Quadrate,Dreiecke

Beitragvon BlackJack » Mittwoch 14. Juni 2017, 12:46

@MG2003: Die drei dringendsten Änderungen sind:

1. Die Einrückung sollte vier Leerzeichen pro Ebene sein und nicht irgendwas zwischen zwei und vier.

2. Namen sind wichtig. Ein Name soll dem Leser vermitteln was der Wert dahinter bedeutet. Einbuchstabige Namen tun das nur sehr selten und bei `Q` und `O` denkt ziemlich sicher niemand sofort „Ah, die stehen für Umfang und Flächeninhalt.“ Bei `umfang` und `flaecheninhalt` weiss der Leser dagegen wofür die Namen stehen.

3. Der Code hat eine sehr regelmässige Struktur mit vielen Wiederholungen. Das ist oft ein Zeichen, dass man eigentlich Daten hat, und aus denen festen Code geschrieben hat, statt die Daten in einer Datenstruktur zu speichern und dann Code ohne die ganzen Wiederholungen der mit den Daten arbeitet.

Schau Dir mal die grundlegenden Datenstrukturen von Python (mindestens Listen und Wörterbücher) und Funktionen an. Und dann überleg mal welche Daten mach benötigt um die Berechnungen zu beschreiben.

`str()` mit dem Ergebnis der `input()`-Funktion aufzurufen macht übrigens keinen Sinn, denn `input()` liefert ja bereits eine Zeichenkette als Ergebnis.

Ich würde die Benutzer auch Gleitkommazahlen eingeben lassen anstatt das auf ganze Zahlen zu beschränken, und dann auch die `format()`-Methode verwenden um die Ergebnisse in die Ausgaben hinein zu formatieren, denn da hat man über die Formatangaben Kontrolle über die Anzahl der angezeigten Nachkommastallen.

Edit: Ups, Sirius3 war schneller. :-)
“Programs must be written for people to read, and only incidentally for machines to execute.” — Abelson & Sussman, SICP (preface to the first edition)

Zurück zu „Ideen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder