2014-09-21 2 views
-2
import math 

x = raw_input("Enter your address") 

print ("The first number to the power of the second number in your address is", math.pow(

Вторая полная неделя занятий только что закончилась, и у меня возникли проблемы с выяснением того, как найти конкретные вещи внутри строки. Если пользователь вводит адрес «1234 Address» , что мне нужно разместить внутри math.pow, он знает, как найти номера 1 и 2?Как найти определенные символы в заданной строке?

Единственное, что было показать в классе, это str.index (''), который я могу использовать только для поиска местоположения конкретных символов внутри строки.

У меня есть задание в ближайшее время, которое в значительной степени зависит от этого, поэтому любая помощь будет оценена по достоинству.

Редактировать: Чтобы очистить, как я могу получить python, чтобы найти первое и второе числа в адресе, если они находятся в адресе?

+1

Вы хотите найти 1 и 2, где бы они ни лежали, или только первый и второй символ строки? – Nabin

+0

Я просто перечитываю то, что написал, извините за путаницу :( Как найти первое и второе число в строке, где бы они ни находились. Если бы адрес был «Адрес 2542» 2 и 5, должен найти. – AmandaZ

ответ

1

Просто используйте x.isdigit(), чтобы найти номера и вставить их в список. Затем используйте math.pow, чтобы найти мощность первых двух.

#!/usr/bin/python 
import math 

address = raw_input("Enter your address : ") 
digits = [] 

for c in address: 
    if c.isdigit(): 
     digits.append(c) 

if len(digits) >= 2: 
    print "The first number to the power of the second number in your address is : " 
    print math.pow(float(digits[0]), float(digits[1])) 
else: 
    print "Your address contains less than 2 numbers" 
0

Поскольку строки являются данными типа итерации в Python, вы можете использовать индексирование для доступа к строковым символам! как my_string[1] это даст вам второго персонажа! а затем с функцией isdigit() вы можете проверить, что это цифра или нет!

Дем:

>>> s='12erge' 
>>> s[1] 
'2' 
>>> s[1].isdigit() 
True 
>>> s[4] 
'g' 
>>> s[4].isdigit() 
False 

и числа находят внутри строки, вы можете использовать [regex][1] и re.search() функции:

>>> import re 
>>> s='my addres is thiss : whith this number 11243783' 
>>> m=re.search(r'\d+',s) 
>>> print m.group(0) 
11243783 

в этом коде r'\d+' является регулярным выражением, которое соответствует всем цифрам с Леном более чем 0,

1
import re 
numbers = re.findall(r'\d+',x) 
numbers[0][0:2] 

Вам нужно импортировать регулярное выражение. Это будет более полезно, так как вы не знаете порядок, в котором числа будут встречаться в строке. После этого вам нужно найти все числа в строке. '\ d +' поможет получить все числа в строке. Тогда все, что вам нужно сделать, это взять первый элемент и взять первые два числа из этой строки.

Надеюсь, это поможет.

+0

Добавление того, как это работает, поможет Аманде, не так ли? – Llopis

+1

все еще редактирует ответ .. – lakesh

Смежные вопросы