Frage von NiggesDerBoss, 34

Python 3 Programm Hilfe?

Ich möchte ein Programm schreiben bei dem man am ANfang 2 Zhalen eingibt (über def f(x,y)) und das dasPRogramm die beiden zahlen und die die zwischen drin liegen multipliziert. Also z.B. f(2,5,) = 234*5 am besten sodass es für mich noob auch verständlich ist ^^

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von precursor, 9

Ich wollte mir mal die Zeit nehmen und Python lernen, aber die Art und Weise wie Python Arrays indiziert hat mich abgestoßen, so dass ich es bleiben lies.

Deshalb kann ich dir nur ein Programm in BASIC anbieten, sollte aber leicht nach Python zu übersetzen sein -->

Hier ist das Programm -->

Hier beginnt es -->

------------------------------------------------------------------------------------------------------------

DEFDBL A-Z

CLS

INPUT "niedrigeere Zahl "; a

PRINT

INPUT "hoehere Zahl "; b

PRINT

IF (b - 1) < a THEN

PRINT "Fehler : b muss mindestens um 1 groesser als als a"

END

END IF

w = 0

s = -1

FOR k = (b - 1) TO a STEP -1

s = s + 1

w = w + k * (10 ^ s)

NEXT k

z = w * b

PRINT "Zahl = "; z

END

-----------------------------------------------------------------------------------------------------------

<-- Hier endet es.

Hierbei ist alles leicht zu verstehen, nur der Befehl DEFDBL A-Z nicht, dieser Befehl sorgt einfach dafür, dass alle Variablen, die mit den Buchstaben A bis Z oder a bis z beginnen, mit erhöhter Rechengenauigkeit vom Datentyp Double zu behandeln sind, das ist alles was dieser Befehl tut.

CLS löscht den Bildschirm, das ist alles.

Hierbei handelt es sich natürlich nur um die primitivste Urform, viele Dinge fehlen da noch, zum Beispiel wenn jemand Kommazahlen eingibt oder Zahlen die außerhalb einer gewünschten Range sind, dann muss das mit einer Fehlerroutine abgefangen werden usw., an dem Programm kann man noch viel verbessern, aber das überlasse ich dir, sonst lernst du gar nichts.

Das Programm liefert auf jeden Fall für Eingaben die dem gesunden Menschenverstand entsprechen die korrekten Ergebnisse.

Kommentar von precursor ,

Es kann sein, dass ich dich falsch verstanden habe !

Sollte 234*5 jetzt 234 * 5 = 1170 bedeuten oder meintest du -->

2 * 3 * 4 * 5 = 120

??

Das Fehlen der Malzeichen in deiner Frage hat mich glauben lassen du meintest 234 * 5 = 1170

Kommentar von precursor ,

Vielen Dank für die Auszeichnung zur hilfreichsten Antwort !

Antwort
von LifeArtist1, 12

Meinst du Fakultät berechnen ?
https://de.wikipedia.org/wiki/Fakult%C3%A4t\_(Mathematik)

Beispiel: 5! = 5*4*3*2*1 

Dafür gibt es ein Beispiel mit rekursion oder ohne:
http://www.python-kurs.eu/rekursive\_funktionen.php

Es zeigt diese:

def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)

Und eine Iterative methode, die dich warscheinlich eher anspricht:

def iterative_factorial(n):
result = 1
for i in range(2,n+1):
result *= i
return result

Achso und du müsstest dann natürlich noch ein zweiten Parameter hinzufügen. und dann diese Funktion nur bis zu diesem zweiten Parameter laufen lassen.

Kommentar von LifeArtist1 ,

So sollte es funktionieren:

def fac(x, y):
    if x == 1 or x == (y-1):
        return 1
    else:
        return x * fac(x-1, y)

Dabei sollte die große Zahl als erstes stehen, ansonsten muss man dort auch nochmal ne kleine abfrage machen und die params tauschen.

Antwort
von Linuxhase, 11

Hallo

Ich kann da nur in Bash helfen:

#!/bin/bash
# Name: calculate.sh
echo $(( $1+$2 ))

Damit wird bei der Ausführung von:

bash calculate.sh 5 6

Die Zahl 11 Ausgegeben (also das Ergebnis der Addition der beiden übergebenen Werte)

Oder auch so:

expr 5 + 6

Sorgt ebenfalls für ein addieren der beiden Zahlen

Linuxhase

Antwort
von iokii, 12

int a=1

int b=x

while (b<=y)

a=a*b

b=b+1

So in etwa.

Keine passende Antwort gefunden?

Fragen Sie die Community