Portgas  D Ace
Portgas D Ace

Reputation: 21

Python3x Integer and String Input

I want the user to input a number Give a number : he types "10" -but... Give a number : he types "I want to type 10" i want the program to just "count" the integer. Because if he types a string the program will stop

import random
goal = random.randrange(1,10)
n = 1 
tries = 0 
name = input("Dose to onoma sou ")

print("A game in Python")
while n != 0 : 
    value = int(input("madepse poio einai to noumero:")) 
    n = abs(value - goal)
    print(value,n)
    tries = tries + 1
    if n >= 4 :
     print("den eisai koda")
    elif n > 0 and n <= 3 :
     print("eisai koda")
    else :
     print("to vrikes")
     print ("to score sou einai: ",tries)

skoros = str(tries)
score = open('score.txt', 'a')
score.write(name)
score.write(' ') 
score.write(skoros)
score.write("\n") 
score.close

Upvotes: 0

Views: 51

Answers (2)

Mark Tolonen
Mark Tolonen

Reputation: 178212

This will take any input and pull the first number out of it. \d matches any digit 0-9, and + means "one or more".

import re

while True:
    user = input('Enter a number: ')
    match = re.search(r'\d+',user)
    if match:
        value = int(match.group(0))
        break
    else:
        print("I didn't see a number in that response.")

print(value)

Upvotes: 1

xXliolauXx
xXliolauXx

Reputation: 1313

Well, you could just manually loop through the string and store the position of the number using isdigit().

The following approach expects the number to be the only one in the string (multi digit allowed):

start = None
stop = None
for i in range(len(input)):
    c = input[i]
    if c.isdigit():
        if start == None:
            start = i
        stop = i
try:
    number = int(input[start:stop])
catch:
    print("invalid input")

EDIT: I guess there would be some nice and easy Regex solution, but I'll leave my hands off of it, as I am not too experienced with it...

Upvotes: 0

Related Questions