Необработанный тип - это имя общего класса или интерфейса без каких-либо аргументов типа. Например, с учетом общего класса Box:
public class Box {
public void set(T t) { /* ... */ }
// ...
}
Чтобы создать параметризованный тип поля, вы указываете фактический аргумент типа для параметра формального типа T:
Box intBox = new Box<>();
Если аргумент фактического типа опущен, вы создаете необработанный тип Box:
Box rawBox = new Box();
vowels = ('a', 'e', 'i', 'o', 'u', 'A', 'I', 'E', 'O', 'U')
for char in text:
if char in vowels:
text = text.replace(char, '')
return text
Я знаю, что на эту тему есть много правильных решений, но я решил добавить несколько интересных способов решения этой проблемы. Если вы пришли из C ++ / C # или Java, вы будете использовать что-то вроде сравнения, а затем действия, используя индекс, чтобы удалить ненужную запись в цикле for. У Python есть функции Remove и Del. Функция удаления использует значение, а del использует индекс. Питоновское решение находится в последней функции. Давайте посмотрим, как мы можем это сделать:
Здесь мы используем индекс в цикле for и del, очень похожий в C ++:
def remove_vol(str1):
#list2 = list1 # this won't work bc list1 is the same as list2 meaning same container#
list1 = list(str1)
list2 = list(str1)
for i in range(len(list1)):
if list1[i] in volwes:
vol = list1[i]
x = list2.index(vol)
del list2[x]
print(list2)
Используя функцию remove:
def remove_vol(str1):
list1 = list(str1)
list2 = list(str1)
for i in list1:
if i in volwes:
list2.remove(i)
print(list2)
Построение новой строки, которая не содержит нежелательных символов, используя их индексы:
def remove_vol(str1):
list1 = list(str1)
clean_str = ''
for i in range(len(list1)):
if list1[i] not in volwes:
clean_str += ''.join(list1[i])
print(clean_str)
То же, что и в решении выше, но с использованием значения:
def remove_vol(str1):
list1 = list(str1)
clean_str = ''
for i in list1:
if i not in volwes:
clean_str += ''.join(i)
print(clean_str)
Как вам это сделать в python? Воспользоваться списком! Это красиво:
def remove_vol(list1):
clean_str = ''.join([x for x in list1 if x.lower() not in volwes])
print(clean_str)
def anti_vowel(text):
new_text = ""
for i in text:
if i == 'a' or i == 'A':
pass
elif i == 'e' or i == 'E':
pass
elif i == 'I' or i == 'i':
pass
elif i == 'o' or i == 'O':
pass
elif i == 'u' or i == 'U':
pass
else:
new_text = new_text + i
return new_text
print anti_vowel('Hey look Words!')
Вы должны сделать это:
инициализировать newstr
до c
, а затем
for x in c.lower():
if x in vowels:
newstr = newstr.replace(x, "")
Это потому, что str.replace(old, new[, max])
возвращает копию строки после замены символы:
Метод replace () возвращает копию строки, в которой вхождения старых были заменены на новые, опционально ограничивая количество замен до макс.
< / blockquote>Итак, это правильный код:
def anti_vowel(c): newstr = c vowels = ('a', 'e', 'i', 'o', 'u') for x in c.lower(): if x in vowels: newstr = newstr.replace(x,"") return newstr
Вы также можете сделать это более питоническим способом:
''.join([x for x in c if x not in vowels])
Моя реализация:
# Ask the user for input:
user_input = input("enter a string with some vowels: ")
print("input string: " + str(user_input))
vowels = ('a','e','i','o','u','A','E','I','O','U')
new_string="";
for i in range(0,len(user_input),1):
if user_input[i] in vowels:
print ('found a vowel, removing...')
else:
new_string+=user_input[i]
print("I've removed the vowels for you. You're welcome! The new string is: " + new_string)
Почему бы вам не сделать это с регулярным выражением? Согласно документации , что-то вроде этого должно работать:
import re
def anti_vowel(s):
result = re.sub(r'[AEIOU]', '', s, flags=re.IGNORECASE)
return result
Если вы часто используете эту функцию, вы можете скомпилировать регулярное выражение и использовать скомпилированную версию.
Попробуйте String.translate.
>>> "Hey look words".translate(None, 'aeiouAEIOU')
'Hy lk wrds'
string.translate (s, table [, deletechars])
Удалить все символы из s, которые находятся в deletechars ( если есть), а затем перевести символы с помощью таблицы, которая должна быть 256-символьной строкой, дающей перевод для каждого символьного значения, индексированный его порядковым номером. Если таблица None, то выполняется только шаг удаления символа.
https://docs.python.org/2/library/string.html#string.Template. замените
Или, если вы используете newfangled Python 3:
>>> table = str.maketrans(dict.fromkeys('aeiouAEIOU')) >>> "Hey look words.translate(table) 'Hy lk wrds'
'test'.translate(str.maketrans('aeiouAEIOU', '-'*10))
производит t-st
, но не может заменить None в Python 3
– Wes
8 March 2018 в 18:36
Достаточно простой подход:
def anti_vowel(text):
t = ''
for c in text:
if c in "aeiouAEIOU":
pass
else:
t += c
return t
def anti_vowel(text):
new=[]
vowels = ("aeiouAEIOU")
for i in text:
if i not in vowels:
new.append(i)
return ''.join(new)
Надеюсь, это поможет ..
def anti_vowel(text):
t=""
for c in text:
for i in "ieaouIEAOU":
if c==i:
c=""
else:
c=c
t=t+c
return t
Другой вариант - отказаться от переменной гласного и поместить символ в цикл.
def anti_vowel(text):
for i in "aeiouAEIOU":
text = text.replace(i,"")
return text
print anti_vowel("HappIEAOy")
Еще одним более простым способом может быть извлечение негласных символов из строки и их возврат.
def anti_vowel(text):
newstring=""
for i in text:
if i not in "aeiouAEIOU":
newstring=newstring+i
text=newstring
return text
[l for l in c if l not in vowels]
? – kiley.a 5 February 2014 в 17:57''.join()
быстрее использовать выражение списка вместо выражения генератора. – Grijesh Chauhan 5 February 2014 в 18:00