Kreisberechnungen

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.
bgmann
User
Beiträge: 3
Registriert: Donnerstag 25. Oktober 2012, 21:23

:D :idea:
Zuletzt geändert von bgmann am Dienstag 30. Oktober 2012, 20:22, insgesamt 1-mal geändert.
BlackJack

@bgmann: Ich habe das mal vom Thema „An alle Schüler und Studenten mit Informatikproblemen” abgetrennt. Und Du solltest zumindest die ersten Beiträge von dem Thema mal lesen. Das ist nicht das Thema in dem Schüler ihre Informatikprobleme posten, sondern was sie vorher lesen sollten um zu wissen wie sie ihre Frage stellen und welche Hilfe sie erwarten können.

Ohne ein wenig Eigenleistung in der Regel eher wenig. Es wird erwartet, dass Du Dich mit Python und der Fragestellung auseinander setzt. Das heisst sich in ein Python-Tutorial einarbeiten und dann die eigene Lösung zeigen, beziehungsweise Teillösung oder zumindest Lösungsansatz.

Die Aufgabe ist in der Tat ganz einfach und die sollte man eigentlich nach vier Tagen Python lernen lösen können. Wo genau sind denn die Schwierigkeiten? Es steht doch fast alles dort was man machen muss. Nicht einmal die Formel muss man sich selber suchen.
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Hallo, ich bin angefangen bevor 4 Tage Python zu lernen und noch die erste Aufgabe kann nicht lösen. Kann mir jemand eventuell helfen? Werde dankbar. Das soll nicht schwer sein, aber für mich es ist, weil ich nur seit 4 Tage es lerne.
Hört sich stark nach translate.google.de an.

math modul
raw_input
PythonWin

Viel Glück :)
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
bgmann
User
Beiträge: 3
Registriert: Donnerstag 25. Oktober 2012, 21:23

Ich kann es nicht lösen trotz alles, was ich gesucht und gelesen habe. Meine variante ist diese, aber ich weiß, dass es falsch ist. Für "try" habe ich keine ahnung was da stehen soll? Wo muss die Formel stehen? Es ist nicht, dass ich nichts versucht habe!

import math
x=math.pi
print x
userVariable=raw_input("Geben Sie bitte Durchmesser ein:")
numBerechnung=float(userVariable)
print numBerechnung
try:

except:
print "Fehler aufgetreten"
raw_input("Press return to close this window...")
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ohne jetzt besonders viel zu verändern. So könntest du deinen Aufgabe weiter bearbeiten:
bgmann hat geschrieben:

Code: Alles auswählen

from math import pi

print pi
userVariable = raw_input("Geben Sie bitte Durchmesser ein:")

try:
    #diese Umwandlung kann fehlschlagen, wenn Eingabe keine Zahl, deshalb try / except
    numBerechnung=float(userVariable)
    print "Durchmesser: ", numBerechnung
    print "Pi: ", pi
    print "Durchmesser^2: ", numBerechnung**2
    # hier muss jetzt die Flaeche berechnet werden
except ValueError:
    print "Eingabe war keine Zahl."
raw_input("Press return to close this window...")
*edit* Ich habe doch noch das except zu einem ValueError gemacht, um nur Fehler der Umwandlung von string to float abzufangen.

Tipp: Führ deinen Code in der Konsole aus, damit du Fehlermeldungen lesen kannst, dann kannst du dir "raw_input("Press return to close this window...")" sparen
bgmann
User
Beiträge: 3
Registriert: Donnerstag 25. Oktober 2012, 21:23

Danke! Bei except steht wieder nix, soll es so sein? Ich weiß nicht, was ich ändern soll, es siecht gut aus.
Ahso, du hast schon bei Except etwas dazu geschrieben. Darf ich diese beide nacheinander schreiben?
print "Fehler aufgetreten"
print "Eingabe war keine Zahl."
Muss man nach "Zahl" "." - Punkt haben?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Probier es doch aus, dann siehst du ja was geht und was nicht. Das ist ja der Vorteil am Programmieren gegenüber etwa mathematischen Beweisen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Eine Lösung in CoffeeScript:

Code: Alles auswählen

#!/usr/bin/env coffee
readline = require "readline"

Number :: squared = () -> this * this

interface = readline.createInterface process.stdin, process.stdout
interface.question "Bitte Durchmesser eingeben: ",
    (answer) ->
        d = parseFloat answer
        if isNaN d
            console.log "Fehler: Eingabe war keine Zahl!"
        else
            console.log "Die Fläche beträgt", Math.PI * d.squared() / 4
        
        interface.close()
        process.stdin.destroy()
:-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

@BlackJack: Einige () kann man weglassen :p
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Einige? Ich habe doch schon fast alle weg gelassen. Die Leeren bei ``Number :: squared`` können weg. Das war's dann aber auch schon.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Haskell :)

Code: Alles auswählen

import Data.Maybe (listToMaybe)
import System.IO (hSetBuffering, BufferMode(NoBuffering), stdout)
import Network.CGI.Protocol (maybeRead)

area :: Double -> Double
area diameter = pi * diameter ^ 2 / 4

ask question = fmap maybeRead (putStr question >> getLine)

main :: IO ()
main = do
    hSetBuffering stdout NoBuffering
    maybeAnswer <- ask "Bitte Durchmesser eingeben: "
    putStrLn $ maybe ("Fehler: Eingabe war keine Zahl!")
                     (("Die Fläche beträgt " ++) . show . area)
                     maybeAnswer
BlackJack

Mal eine eher langweilige Sprache: Pascal. Damit es nicht ganz so langweilig wird die Berechnung in Assembler (x86 FPU, AT&T syntax):

Code: Alles auswählen

Program CircleArea;

Const
  four: Word = 4;

Var A, d: Real;

Begin
  Write('Bitte Durchmesser eingeben: ');
  ReadLn(d);
  Asm
    fninit
    fld d
    fmul %st,%st
    fldpi
    fmulp
    fidiv four
    fstp A
  End;
  WriteLn('Die Fläche beträgt ', A:0:3);
End.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Warum nicht mal LabVIEW?
Bild
BlackJack

May the Forth be with you:

Code: Alles auswählen

: main ( -- )
    ." Bitte Durchmesser eingeben: " pad 80 accept cr
    pad swap >float
    if
        fdup f* pi f* 4e f/
        ." Die Fläche beträgt " f.
    else
        ." Eingabe war keine Zahl."
    then cr ;

main bye
Benutzeravatar
snafu
User
Beiträge: 6754
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Oder wenn's Java sein darf:

Code: Alles auswählen

import java.util.Scanner;

public class Durchmesserberechner {
    public static void main(String[] args) {
        System.out.print("Bitte Durchmesser eingeben: ");
        String eingabe = new Scanner(System.in).nextLine();
        try {
            double durchmesser = new Double(eingabe);
            System.out.format("Die Fläche beträgt %.1f",
                              Math.PI * Math.pow(durchmesser, 2) / 4);
        } catch (NumberFormatException e) {
            System.err.println("Fehler: Eingabe war keine Zahl!");
        }
    }
}
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Hm, die Python-Lösung hat mich noch nicht überzeugt. Der try-except-Block ist sinnlos, da der Fehler gar nicht behandelt wird, sondern nur die Fehlermeldung, die sowieso erscheinen würde, ausgegeben wird.

Edit: Code entfernt. ;)
Zuletzt geändert von nomnom am Sonntag 28. Oktober 2012, 13:53, insgesamt 1-mal geändert.
BlackJack

Darii's inspiration von Lösungen in „grafischen” Programmiersprachen folgend eine Lösung in Scratch zusammen geklickt:
Bild

@nomnom: Juhuu, wenigstens einer der die Hausaufgabe für den OP in abgebbarer Form gelöst hat.

Was meinst Du mit „dank PEP8”? Genau *die* Zeile hält sich da nicht dran, denn da fehlen Leerzeichen um die Operatoren. Ich hoffe Du hast da nicht die Leerzeichen um die Zuweisung von Default- und Schlüsselwortargumenten einfach auf Operatoren übertragen.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

BlackJack hat geschrieben:@nomnom: Juhuu, wenigstens einer der die Hausaufgabe für den OP in abgebbarer Form gelöst hat.

Was meinst Du mit „dank PEP8”? Genau *die* Zeile hält sich da nicht dran, denn da fehlen Leerzeichen um die Operatoren. Ich hoffe Du hast da nicht die Leerzeichen um die Zuweisung von Default- und Schlüsselwortargumenten einfach auf Operatoren übertragen.
Das mit der Hausaufgabe habe ich gar nicht bedacht.

Irgendwo, meine ich, habe ich mal gelesen, dass da Leerzeichen hingehören. In PEP8 habe ich es nicht mehr gefunden ...
BlackJack

@nomnom: Ist jetzt etwas ungünstig über nicht mehr vorhandenen Quelltext zu diskutieren. ;-)

In PEP8 steht: Leerzeichen vor und nach Operatoren. Und die hattest Du nicht gesetzt, Dich aber im Kommentar darauf bezogen, dass das wegen PEP8 so aussieht.
BlackJack

Früher war alles viel einfacher — da hätte es so auf meinem Bildschirm (== Fernseher) ausgesehen (ohne die farbige Hervorhebung der Syntax allerdings):

Code: Alles auswählen

LIST

10 INPUT"DURCHMESSER";D
20 PRINT"FLAECHE:";π*D↑2/4
READY.
RUN
DURCHMESSER? 10
FLAECHE: 78.5398164

READY.
Antworten