Python :: Aufgabe #249

4 Lösungen Lösungen öffentlich

Die Collatz-Sequenz (3n+1)

Anfänger - Python von DragStar - 23.03.2020 um 09:34 Uhr
Schreibe ein Programm, welches die Eingabe einer Zahl anfordert und dann von dieser Zahl die Collatz-Sequenz ausgibt.

Lösungen:

vote_ok
von jigga (4260 Punkte) - 30.03.2020 um 12:53 Uhr
Quellcode ausblenden Python-Code
def compute(num):
	if num % 2 == 0:
		return int(num/2)
	else:
		return int(3*num + 1)

liste=[]
num = int(input("Zahl > 0: "))

while len(liste) < 3:
	liste.append(num)
	num = compute(num)

while liste[-1] != 1 and liste[-2] != 2 and liste[-3] != 4:
	liste.append(num)
	num = compute(num)
	
print("Collatz-Sequenz:",liste)
vote_ok
von satn1241 (3090 Punkte) - 01.04.2020 um 13:31 Uhr
Quellcode ausblenden Python-Code
# Collatz-Sequenz
n = int(input("Geben Sie eine natürliche Zahl größer Null ein: "))
while n !=1:
    if n%2 == 0:
        n = int(n/2)
    elif n%2 ==1:
        n = int(3*n+1)
    print(n)
vote_ok
von Asthos (410 Punkte) - 04.04.2020 um 00:16 Uhr
Quellcode ausblenden Python-Code
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Aufgabe:
# Schreibe ein Programm, welches die Eingabe einer Zahl anfordert und dann von dieser Zahl die Collatz-Sequenz ausgibt.

while True:
    try:
        zahl = int(input('Geben Sie eine natürliche Zahl ein: '))
    except ValueError:
        continue
    if  zahl < 1:
        None
    else:
        break

reihe = []
reihe.append(zahl)

while True:
    if zahl % 2 == 0:
        zahl = round(zahl / 2)
    else:
        zahl = 3 * zahl + 1
    reihe.append(zahl)
    if zahl == 1:
        break
print(reihe)


Ergebnis bei Startwert von 25:
[25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
vote_ok
von Des_ORNTRT (530 Punkte) - 15.04.2020 um 19:53 Uhr
Quellcode ausblenden Python-Code
import matplotlib.pyplot as plt
x = []
y = []
i = 0
start_Zahl = int(input("Startzahl eingeben \n "))


while True:
    if y.__contains__(4):
        break
    y.append(start_Zahl)
    x.append(i)
    if  int(start_Zahl) % 2 == 0:
        start_Zahl = int(start_Zahl) / 2
        y.append(start_Zahl)
        i += 1
        x.append(i)
    else:
        start_Zahl = start_Zahl * 3 + 1
        y.append(start_Zahl)
        i += 1
        x.append(i)


else:
    print("Das ist keine Zahl")

plt.bar(x, height=y, color='g')
plt.show()