Seite 1 von 1

Wurzelprogramm: Lösung ohne Nachkommastellen

Verfasst: Donnerstag 12. Januar 2012, 16:22
von amigo
Hi Leute,
Also ich hab folgendes Problem: Ich hab ein Programm geschrieben, dass Quadratwurzeln mit math.sqrt() ausrechnet.
Hier der Code:

Code: Alles auswählen

import math
print "Dieses Programm errechnet die Wurzel der Zahl, die sie eingeben."

def rechnung():
          global zahl         
          try:
               zahl = input("Bitte eine positive Zahl eingeben:")

          except NameError: 
               return eingabe()
          if(zahl>= 0):
               wurzel = d(math.sqrt(zahl))
               print "Die Wurzel von %d ist %d" %(zahl, wurzel)
          else:     return rechnung()
          
          wieder = raw_input("Wenn Sie noch eine Rechnung durchführen möchten, dann geben Sie bitte J ein!")
          if (wieder == "J"):
               return rechnung()
          else:
               print ("Auf Wiedersehen.")
               
          
rechnung()
Das Problem ist, dass wenn eine Zahl eingegeben wird, die keine grade wurzel hat, dann wird das Ergebnis abgerundet.
Was kann ich dagegen tun??
Danke im Vorraus

Re: Wurzelprogramm: Lösung ohne Nachkommastellen

Verfasst: Donnerstag 12. Januar 2012, 17:08
von /me
amigo hat geschrieben:Das Problem ist, dass wenn eine Zahl eingegeben wird, die keine grade wurzel hat, dann wird das Ergebnis abgerundet.
Das kann nicht der ganze Code sein. Was macht denn die Funktion d() die du in "d(math.sqrt(zahl))" verwendest? Abrunden vielleicht?

Ganz kurz noch (ich muss weg): global ist böse und der Aufruf der Funktion aus sich selber ist auch suboptimal.

Re: Wurzelprogramm: Lösung ohne Nachkommastellen

Verfasst: Donnerstag 12. Januar 2012, 17:47
von nomnom
Du verwendest die Stringformatierung falsch. Wenn man eine Gleitkommazahl ausgeben will, sollte man nicht 'int' auswählen.

Code: Alles auswählen

>>> '%d' % 1.1
'1'
>>> '%f' % 1.1
'1.100000'

Re: Wurzelprogramm: Lösung ohne Nachkommastellen

Verfasst: Donnerstag 12. Januar 2012, 21:24
von amigo
Also die funktion d() war ausversehen da und ich weiß dass das kein perfekter stil ist aber ich habe jetzt nach ner langen pause erst wieder angefangen zu programmieren. Vllt kannst du mir sagen wie du es machen würdest, das eine eingabe solange neu kommt bis die gewünschte eingabe da.ist.
Das mit den Variablen probier ich mal danke:-D

Re: Wurzelprogramm: Lösung ohne Nachkommastellen

Verfasst: Donnerstag 12. Januar 2012, 21:33
von nomnom
Indem du eine `while`-Schleife benutzt und ausbrichst, wenn eine gültige Eingabe kommt. Außerdem benutzt du mal schön `raw_input` und konvertierst das zu `int`. ;)