2017-10-23 7 views
2

Ich versuche, ein Python3.3-Programm (mit Windows 10 und einem Editor und Befehlszeile), die eine Benutzereingangsnummer und gibt eine neue Zahl jedes Mal, wenn die Ausgabe Nummer nicht 1 ist und die die Zahl ändert, indem nur durch 2 für gerade Zahlen geteilt und mit 3 und plus eins für ungerade Zahlen multipliziert wird.Automatisieren Sie die langweiligen Sachen collatz Sequence

def collatz(): 
    if collatz() == ' ': #if collatz() doesn't have a return value yet 
     number = input('Please Enter A Number. ') 
    number = int(number) 
    if number % 2 == 0: 
     number = number // 2 
     return number 
    else: 
     number = 3*number + 1 
     return number 

while number > 1: 
    collatz() 

zog ich die Dinge um einen Haufen, und ich habe es die erste Operation in einer Schleife zu wiederholen bekommen, und ich habe es bekommen eine Eingabeaufforderung für mehr Benutzereingaben geben Sie mir nur die eine Nummer und dann? Kann jemand mir sagen, wie man

Antwort

0

Sie scheinen die meisten Stücke aber nicht ganz in der richtigen Reihenfolge zu haben. Ich vermute, Sie wollen etwas mehr wie:

def collatz(number): 
    if number % 2 == 0: 
     number = number // 2 
    else: 
     number = 3 * number + 1 
    return number 

my_number = int(input('Please Enter A Number: ')) 

print(my_number) 

while my_number > 1: 
    my_number = collatz(my_number) 
    print(my_number) 
0

Was Sie brauchen, ist eine Funktion collatz(), die eine Zahl als Argument für sie akzeptiert und gibt eine andere Zahl, die nach dem 1. Iteration. Normalerweise möchten Sie input() nicht innerhalb einer Funktion verwenden, da die Funktion dann nicht mehr wiederverwendbar ist.

Betrachten wir den folgenden Code:

def func(var): 
    print(var) 

func(45) 

Es gibt die Zahl 45 als die ganze Zahl 45 in die Funktion übergeben wird func() und kann dann durch Befehle innerhalb func() verwendet werden. Es hört dann auf zu existieren, wenn func() beendet ist. Wahrscheinlich möchten Sie in ähnlicher Weise eine Ganzzahl in Ihre collatz()-Funktion übergeben.

Der folgende Ausschnitt zeigt das return Schlüsselwort:

def func(): 
    return 5 

var = func() 
print(var) 

Dieser Code wird die Nummer 5, drucken, wie func() 5 zurück, und es wird gespeichert in var.

Sie werden diese beiden Techniken in Ihrem Code verwenden wollen, so dass Sie die Eingabe vom Benutzer außerhalb der Funktion nehmen, dann weiter collatz() auf der Nummer aufrufen, die Ausgabe davon in die nächste Iteration übergeben, bis es 1 ausgibt.

Ich habe nicht den vollständigen Code für Sie geschrieben; Sie sollten das selbst tun können, aber lassen Sie es mich wissen, wenn Sie kämpfen.