Hallo Freunde,
ich versuche etwas Python zu lernen.
Jedoch stelle ich fest, dass ich nicht weiterkomme.
Es entstehen immer Probleme.
Ich erhalte immer wieder Doppelungen.
Ich hoffe hier kann mir jemand weiter helfen.
Vielen Dank im Voraus.
import random
x = random.randint(1,6)
x1 = random.randint(1,6)
x2 = random.randint(1,6)
x3 = random.randint(1,6)
x4 = random.randint(1,6)
x5 = random.randint(1,6)
if x==(x1,x2,x3,x4,x5):
x = random.randint(1, 6)
if x1==(x,x2,x3,x4,x5):
x1 = random.randint(1, 6)
if x2==(x,x1,x3,x4,x5):
x2 = random.randint(1, 6)
if x3==(x,x1,x2,x4,x5):
x3 = random.randint(1, 6)
if x4==(x,x1,x2,x3,x5):
x4 = random.randint(1, 6)
if x5==(x,x1,x2,x3,x5):
x5 = random.randint(1, 6)
print('Zahl x : \t',x)
print('Zahl1 x1: \t',x1)
print('Zahl2 x2: \t',x2)
print('Zahl3 x3: \t',x3)
print('Zahl4 x4: \t',x4)
print('Zahl5 x5: \t',x5)
Frage: random ohne Doppelung?
Vergleiche von int mit tuple sind immer False. Was Du suchst, ist der ›in‹-Operator. Da Du aber n Zahlen aus einer Menge m ziehen, nimm doch ›random.sample‹:
Code: Alles auswählen
zahlen = random.sample(range(1,7), 6)
-
- User
- Beiträge: 4
- Registriert: Samstag 19. Mai 2018, 20:45
Super, vielen Dank für deine Hilfe.
Jetzt klappt es mit der Ausgabe.
Jetzt würde ich gerne wissen, wie ich die Ausgabe 10 mal wiederholen kann, dass ich 10 Ergebnisse habe.
zahlen = random.sample(range(1,50), 6)
zahlen1 = random.sample(range(1,50), 6)
Ich habe es untereinander aufgeschrieben, jedoch geht das bestimmt eleganter oder?
Vielen Dank im Voraus.
Jetzt klappt es mit der Ausgabe.
Jetzt würde ich gerne wissen, wie ich die Ausgabe 10 mal wiederholen kann, dass ich 10 Ergebnisse habe.
zahlen = random.sample(range(1,50), 6)
zahlen1 = random.sample(range(1,50), 6)
Ich habe es untereinander aufgeschrieben, jedoch geht das bestimmt eleganter oder?
Vielen Dank im Voraus.
-
- User
- Beiträge: 4
- Registriert: Samstag 19. Mai 2018, 20:45
Ich verstehe.
Kann einer mir sagen, was an meinen Code falsch sein soll?
import random
i= int
i=0
while i < 10:
zahlen = random.sample(range(1,100), 5)
i=i+1
zahlen.sort
print(zahlen)
Fehlermeldung:
while i < 10:
^
IndentationError: unexpected indent
Kann einer mir sagen, was an meinen Code falsch sein soll?
import random
i= int
i=0
while i < 10:
zahlen = random.sample(range(1,100), 5)
i=i+1
zahlen.sort
print(zahlen)
Fehlermeldung:
while i < 10:
^
IndentationError: unexpected indent
Einrückung ist in Python wichtig. ›while‹ ist ohne syntaktischem Sinn eingerückt. Daneben ist es unsinnig `i` erst den Wert `int` dann 0 zuzuweisen. `sort` sollte man auch aufrufen (). Wenn man im vorhinein weiß, wie oft eine Schleife durchlaufen werden soll, dann nimmt man `for` und nicht `while`..
Hi,
mit i = int weist du i den Wert von int zu, der undefiniert ist, int ist keine Typdefinition, sondern in diesem Fall eine Variable ohne Wert.
Der Inhalt einer Schleife muss eingerückt werden, so wie hier:
Problem ist, dass hier der Variable "zahlen" 10x ein Zufallswert zugewiesen wird, der alte dabei jedoch immer überschrieben wird.
Wenn du eine Variable mit mehreren Werten haben möchtest, kannst du dies mit einer Liste oder einem Tuple realisieren.
Eine for-Schleife ist bei einer festen Anzahl von Wiederholungen auch eleganter, z.B.
In Python gibt es zudem noch elegantere Lösungen dafür, sogenannte "list-comprehensions":
Schau dir mal die Tutorials hier auf Youtube an. Kann ich empfehlen.
https://www.youtube.com/watch?v=dyJdLal ... 4oBgp3E9Zs
mit i = int weist du i den Wert von int zu, der undefiniert ist, int ist keine Typdefinition, sondern in diesem Fall eine Variable ohne Wert.
Der Inhalt einer Schleife muss eingerückt werden, so wie hier:
Code: Alles auswählen
i = 0
while i < 10:
zahlen = random.sample(range(1, 100, 5))
i += 1
Wenn du eine Variable mit mehreren Werten haben möchtest, kannst du dies mit einer Liste oder einem Tuple realisieren.
Eine for-Schleife ist bei einer festen Anzahl von Wiederholungen auch eleganter, z.B.
Code: Alles auswählen
zahlen = []
for i in range(10):
zahlen.append(random.sample(range(1, 100, 5))
print(zahlen)
Code: Alles auswählen
zahlen = [random.sample(range(1, 100, 5) for i in range(10)]
print(zahlen)
https://www.youtube.com/watch?v=dyJdLal ... 4oBgp3E9Zs
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
-
- User
- Beiträge: 4
- Registriert: Samstag 19. Mai 2018, 20:45
Wow, super vielen Dank für eure Hilfe.
Ich lerne immer mehr dazu und danke für eure Geduld.
Leider funktioniert aber nicht die angebotene Version in PyCharm nicht:
zahlen = []
for i in range(10):
zahlen.append(random.sample(range(1, 100, 5))
print(zahlen)
Die Fehlermeldung in PyCharm Community IDE besagt:
print(zahlen)
^
SyntaxError: invalid syntax
Was kann da falsch sein?
Ich lerne immer mehr dazu und danke für eure Geduld.
Leider funktioniert aber nicht die angebotene Version in PyCharm nicht:
zahlen = []
for i in range(10):
zahlen.append(random.sample(range(1, 100, 5))
print(zahlen)
Die Fehlermeldung in PyCharm Community IDE besagt:
print(zahlen)
^
SyntaxError: invalid syntax
Was kann da falsch sein?
@pythonbeginner2000: Zähl’ mal die Klammern in der Zeile vor dem Syntax-Error. Bitte setze außerdem Quelltext in Zukunft in Python- bzw. Code-Tags, damit die Einrückung erhalten bleibt und man den Quelltext lesen kann.
@ThomasL: `i = int` erstellt keine Variable mit undefiniertem Wert, sondern weist der Variablen `i` den Wert `int` zu (bzw. genauer: Der Wert `int` wird an den Namen `i` gebunden). In Python ist alles, was man an einen Namen binden kann, ein Wert. Folgendes Programm gibt 42 aus, wenn 40 eingegeben wird:
Vielleicht ein etwas sinnvolleres Beispiel, warum man das machen will:
@ThomasL: `i = int` erstellt keine Variable mit undefiniertem Wert, sondern weist der Variablen `i` den Wert `int` zu (bzw. genauer: Der Wert `int` wird an den Namen `i` gebunden). In Python ist alles, was man an einen Namen binden kann, ein Wert. Folgendes Programm gibt 42 aus, wenn 40 eingegeben wird:
Code: Alles auswählen
i = int
foo = i(input())
print(foo + 2)
Code: Alles auswählen
def checked_input(prompt, type_=int):
while True:
try:
return type_(input(prompt))
except ValueError:
print(f"Please enter a value that can be converted to `{type_.__qualname__}`")
uh wie peinlich, hast natürlich recht.
Und da int eine Klasse in Python ist, ist i nach i = int vom Typ <class 'int'>.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Au man, die Erkenntnis des Unwissens ist wie im Treibsand feststecken und beim Versuch heraus zu kommen immer tiefer zu sinken.
Aber danke, habe dadurch wieder dazu gelernt.
Muss mich doch noch etwas tiefer mit dieser Materie beschäftigen
Aber danke, habe dadurch wieder dazu gelernt.
Muss mich doch noch etwas tiefer mit dieser Materie beschäftigen
Code: Alles auswählen
>>> print(int)
<class 'int'>
>>> dir(int)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>> print(int.__doc__)
int(x=0) -> integer
int(x, base=10) -> integer
Convert a number or string to an integer, or return 0 if no arguments
are given. If x is a number, return x.__int__(). For floating point
numbers, this truncates towards zero.
If x is not a number or if base is given, then x must be a string,
bytes, or bytearray instance representing an integer literal in the
given base. The literal can be preceded by '+' or '-' and be surrounded
by whitespace. The base defaults to 10. Valid bases are 0 and 2-36.
Base 0 means to interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4
>>> type(int)
<class 'type'>
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png