2017-08-03 2 views
2
finallist = [] 
for each_time in range(10): 
    x = int(input("Whats your number ? ")) 
    finallist.append(x) 

Es fragen 10mal "Whats your number ? " und .append die erhaltene Antwort mit input() als int in eine Liste, wollte ich es gibt es einen einfachen Weg, wissen, dies zu tun, vielleicht mit Karte? Ich habe auf ähnliche Probleme etwas über json auch gelesen.Gibt es dafür einen einfacheren, effizienteren oder kürzeren Weg?

finallist.append(int(input("Whats your number ? "))) 

Ich weiß, dass ich das tun kann, aber aus Gründen der Erklärung zog ich es vor, die erste zu schreiben.

+1

'[int für _ im Bereich (11)]? –

+2

Das ist * völlig in Ordnung *. Eine vorzeitige Optimierung ist "die Wurzel allen Übels". Dies zu tun, um ein paar Zeilen zu sparen, ist nur Torheit. –

+0

Danke, ich habe mich nur gefragt, ob eine einfachere Built-in dies für mich tun würde @ juanpa.arrivillaga –

Antwort

5

Sie könnte tut es mit einer Liste Verständnis:

finallist = [int(input("Whats your number ? ")) for _ in range(10)] 

aber ich wouldn't recommend doing it, da es weniger klar ist, was los ist.

Oder, wie Zen of Python sagen würde:

>>> import this 
... 
Explicit is better than implicit. 

Liste Comprehensions (und map, filter, reduce, etc.) sind am besten, wenn Ihre Funktion keine Nebenwirkungen hat. Und Benutzer nach Eingaben zu fragen, hat Nebenwirkungen.

+3

für die Empfehlung der OP gegen die Verwendung dieser. Das OP gewinnt nicht wirklich viel, indem es ein Listenverständnis gegen eine Vanilleschleife verwendet. Wie @ juanpa.arrivillaga in seinem Kommentar sagte, ist eine vorzeitige Optimierung sehr selten eine gute Idee. –

+0

Es hängt von Ihrer Perspektive ab, ob das Bestimmen der Benutzereingabe ein "Nebeneffekt" oder eine Berechnung ist. Es ist nicht "fire the nukes" für i in 1 bis 10, es ist "determined i'th eingegebene Nummer" für i in 1 bis 10. –

+0

In jedem Fall, du bist ein reines Listenverständnis mit einer Berechnung zu tainten. – randomir

2

Sie ein Verständnis verwenden:

numbers = [int(input("Number please")) for i in range(10)] 
+2

Kleinere Verbesserung: Wenn Sie nie die Variable verwenden, die Sie verwenden, um über eine iterierbare iterieren - in Ihrem Fall - es ist übliche Konvention, stattdessen "_" zu verwenden. Das lässt den Leser wissen, dass Sie nur über das iterable für Codewiederholung iterieren. –

+0

@ChristianDean wusste das nicht, danke für die Information –

2

Verwendung Verständnis ist immer eine bessere Alternative zu einer for Schleife:

finallist = [int(input("Whats your number ? ")) for _ in range(10)] 
0

Betrachten Sie ermöglicht dem Benutzer, alle von ihnen in einem einmal durch Leerzeichen getrennt sind, etwas in dieser Richtung zu geben: ("Was ist Ihre Nummer" input())

while True: 
    s = input("Enter 10 numbers (separated by spaces)? ").split() 
    if len(s) != 10: 
     print("Sorry, that was {} values, try again".format(len(s))) 
    else: 
     finallist = [int(n) for n in s] 
     break 
1
result = [] 
while not len(result) == 10: 
    result += [input('What is your number? ')] 
+0

Das war sehr schlauer Typ, danke –

Verwandte Themen