2016-06-29 20 views
0

Ok, ich bin also neu in der Programmierung. Mein Programm fordert den Benutzer auf, eine '3-stellige Nummer' einzugeben ... und ich muss die Länge der Nummer bestimmen (vergewissere dich, dass es nicht weniger als 3 Ziffern ist) zur gleichen Zeit, zu der ich es überprüfe ist eine ganze Zahl. Das ist, was ich habe:Wie ermittle ich Eingabe als Integer und die Länge gleichzeitig?

while True: 
    try: 
     number = int(input("Please enter a (3 digit) number: ")) 
    except: 
     print('try again') 
    else: 
     break 

jede Hilfe ist willkommen! :)

+2

Ist '012'count als 3 Ziffern oder 2? Sie können die Zahl immer wieder in einen String umwandeln und sich die Länge ansehen: 'len (str (number))'. Außerdem müssten Sie eine zusätzliche Validierung für Fälle wie "12.3" usw. durchführen ("isdigit" wäre hier praktisch). – Bahrom

Antwort

0

input() kehren Sie eine Zeichenfolge ist zu erhöhen. So können Sie zuerst die Länge dieser Nummer überprüfen, und die Länge ist nicht 3, dann können Sie den Benutzer erneut fragen. Wenn die Länge 3 ist, können Sie diese Zeichenfolge als eine Zahl von int() verwenden. len() gibt Ihnen die Länge der Zeichenfolge.

while True: 
    num = input('Enter a 3 digit number.') 
    if len(num) != 3: 
     print('Try again') 
    else: 
     num = int(num) 
     break 
+0

das hat funktioniert, vielen Dank! – Kody

+0

Wenn Sie dasselbe in Python 2.x verwenden möchten, sollten Sie 'raw_input()' anstelle von 'input()' verwenden. Da Python nicht abwärtskompatibel ist, kommt es oft zu Problemen. Auch Sie können die Antwort abstimmen, wenn es geholfen hat. – GadaaDhaariGeek

1

Sie könnten so etwas in Ihrer try/except-Klausel versuchen. Ändern Sie bei Bedarf.

number_string = input("Please enter a (3 digit) number: ") 
number_int = int(number_string) 
number_length = len(number_string) 
if number_length == 3: 
    break 

könnten Sie auch eine assert verwenden eine Ausnahme, wenn die Länge der Nummer nicht 3.

try: 
    assert number_length == 3 
except AssertionError: 
    print("Number Length not exactly 3") 
0

die Eingabe in einer Variablen halten, bevor es in ein int wirft ihre Länge zu überprüfen:

my_input = input("Please enter a (3 digit) number: ") 
if len(my_input) != 3: 
    raise ValueError() 
number = int(my_input) 

Beachten Sie, dass except: allein ist ein bad practice. Sie sollten auf Ihre Ausnahmen abzielen.

0
while True: 
    inp = raw_input("Enter : ") 
    length = len(inp) 
    if(length!=3): 
     raise ValueError 
    num = int(inp) 

Falls Sie Python 2.x verwenden, verwenden Sie input nicht. Verwenden Sie immer raw_input.

Wenn Sie Python 3.x verwenden, ist es in Ordnung.

Read Here

0

Dies sollte es tun:

while True: 
    try: 
     string = input("Please enter a (3 digit) number: ") 
     number = int(string) 
     if len(string) != 3 or any(not c.isdigit() for c in string): 
      raise ValueError() 
    except ValueError: 
     print('try again') 
    else: 
     break 
Verwandte Themen