Я'м пытаются проверить на палиндром с Python. Код у меня очень " за " -цикл интенсивной.
И мне кажется, самую большую ошибку делают люди, когда едут из C в Python пытается реализовать логику с использованием Python, который делает вещи медленно, и это's просто не язык.
Я смотрю на этот сайт. Поиск на "c-стиль для" Ну, что Python не'Т У с-стиль для петли. Может быть устаревшей, но я интерпретировать это означает, Python имеет свои собственные методы для этого.
Я'вэ пытался смотреть вокруг, я могу'т найти много актуальной (в Python 3) совет для этого. Как я могу решить палиндромом задача в Python, без использования цикла for?
Я'ве сделали это в C в класс, но я хочу сделать это в Python, на личной основе. Проблема с Проект Эйлера, отличный сайт, кстати.
def isPalindrome(n):
lst = [int(n) for n in str(n)]
l=len(lst)
if l==0 || l==1:
return True
elif len(lst)%2==0:
for k in range (l)
#####
else:
while (k<=((l-1)/2)):
if (list[]):
#####
for i in range (999, 100, -1):
for j in range (999,100, -1):
if isPalindrome(i*j):
print(i*j)
break
Я'м пропавших много кода здесь. Пять хэши просто напоминания для себя.
Конкретные вопросы:
В C, я хотел бы сделать для петли сравнение индекса 0 до индекса максимум, а затем индекса 0+1 С Max-1, пока что-то не то. Как лучше всего сделать это в Python?
Мой цикл for (В ассортименте (999, 100, -1), это плохой способ сделать это в Python?
У кого-нибудь есть дельный совет, или хорошие сайты, или ресурсы для людей в моем положении? Я'м не программист, я не'т стремится быть одна, я просто хочу узнать настолько, что когда я пишу свои бакалавр'ы степень дипломной работы (электротехника), я не'т придется одновременно изучать соответствующий язык программирования, при попытке получить хорошие результаты в проекте. "Как перейти от базового C до большое применение в Python" Ну и тому подобное.
Какие-либо конкретные фрагменты кода, чтобы сделать отличное решение этой проблемы также буду признателен, мне нужно узнать хорошие алгоритмы.. я приметила 3 ситуаций. Если значение равно нулю или одной цифры, если оно нечетной длины, а если даже длина. Я собиралась написать для петель...
ЗЫ: задача: найти максимальное значение продукта из двух 3-значных чисел, что также является палиндромом.
Типичный для Python способ определить, если данное значение является палиндромом:
str(n) == str(n)[::-1]
Объяснение:
Н
равна перевернутое представление строки п
[::-1]
кусок заботится инвертирования строки==
Альтернативой довольно сложным [::синтаксис -1]
это:
>>> test = "abcba"
>>> test == ''.join(reversed(test))
True
В обратной
функция возвращает обратную последовательность символов в "тест".
''.присоединяйтесь к()
объединяет эти персонажи снова вместе с ничего между ними.
Просто для записи, и для тех, кто ищет более алгоритмический способ проверить, если данная строка является палиндромом, два пути для достижения того же (через А
и для
петли):
def is_palindrome(word):
letters = list(word)
is_palindrome = True
i = 0
while len(letters) > 0 and is_palindrome:
if letters[0] != letters[(len(letters) - 1)]:
is_palindrome = False
else:
letters.pop(0)
if len(letters) > 0:
letters.pop((len(letters) - 1))
return is_palindrome
И....второй:
def is_palindrome(word):
letters = list(word)
is_palindrome = True
for letter in letters:
if letter == letters[-1]:
letters.pop(-1)
else:
is_palindrome = False
break
return is_palindrome
Огромная часть Python-это вещи, которые вы можете делать с ним. Вы Don'т должны использовать индексы для строк.
Следующий будет работать (используя кусочки)
def palindrome(n):
return n == n[::-1]
Что он делает, просто переворачивает N и проверяет, если они равны. Н[::-1]
меняет городе N (-1 означает декремент)
"и 2) для петли (в ассортименте (999, 100, -1), это плохой способ сделать это в Python?&и"
В связи с вышесказанным вы хотите использовать xrange вместо диапазона (потому что диапазон будет создать реальный список, а xrange-это быстрый генератор)
Мое мнение по вопросу 3
Я выучил C до Python, и я просто читаю документы, и играл вокруг с помощью консоли. (и решала задачи проект Эйлера как хорошо :)
Ниже код будет печатать 0 если это палиндром еще он будет печатать -1
Оптимизирован Код
word = "nepalapen"
is_palindrome = word.find(word[::-1])
print is_palindrome
Выход: 0
word = "nepalapend"
is_palindrome = word.find(word[::-1])
print is_palindrome
Выход: -1
при поиске в строку значение, возвращаемое значение местоположения, что строка начинается на.
Поэтому, когда вы делаете слово.найти(слово[::-1])находит
nepalapenна месте
0и
[::-1]переворачивает
nepalapenи еще
nepalapenна месте
0так
0` возвращается.
Теперь, когда мы ищем nepalapend
и затем nepalapend " до " dnepalapen
он делает ложные
заявление nepalapend
изменилась на dnepalapen
результате поиска не удалось найти nepalapend в результате значение
-1`, который указывает строка не найдена.
Другой метод печати правда если палиндром еще печать ложь
word = "nepalapen"
print(word[::-1]==word[::1])
выход: Правда
Я знаю, что на этот вопрос ответил давно и я извинился за вторжение. Однако,я был способ сделать это в Python, и я просто думал, что я хотел бы поделиться то, что я сделал это следующим образом,
word = 'aibohphobia'
word_rev = reversed(word)
def is_palindrome(word):
if list(word) == list(word_rev):
print'True, it is a palindrome'
else:
print'False, this is''t a plindrome'
is_palindrome(word)
Существует намного более простой способ я нашел. Это'только линия 1.
is_palindrome = word.find(word[::-1])
def isPalin(checkWord):
Hsize = len(lst)/2
seed = 1
palind=True
while seed<Hsize+1:
#print seed,lst[seed-1], lst [-(seed)]
if(lst[seed-1] != lst [-seed]):
palind = False
break
seed = seed+1
return palind
lst = 'testset'
print lst, isPalin(lst)
lst = 'testsest'
print lst, isPalin(lst)
Выход
testset True
testsest False
Здесь без учета регистра функции, так как все вышеперечисленные решения являются чувствительными к регистру.
def Palindrome(string):
return (string.upper() == string.upper()[::-1])
Эта функция будет возвращать логические значение.
делаю курс Watterloo для Python, одни и те же вопросы поднимают как-то "Lesseon" и найти здесь информацию:
http://cscircles.cemc.uwaterloo.ca/13-lists/
будучи новичком я решил проблему следующим образом:
def isPalindrome(S):
pali = True
for i in range (0, len(S) // 2):
if S[i] == S[(i * -1) - 1] and pali is True:
pali = True
else:
pali = False
print(pali)
return pali
Функция называется isPalindrome(С) и требует строку запах мяты,&; с&;. Возвращаемое значение по умолчанию правда, начальные проверить на первых, если заявление.
После этого цикл for работает на половину длины строки, чтобы проверить, если символ из строки и"Ы" ПО в должности "Я и" то же с передней и с задней. Если только это не тот случай, функция останавливается, печатает false и возвращает false.
Ура.кг
Если в строке прописной или неалфавитный символ, то функция преобразует все символы в нижний регистр и удаляет все не-алфавитные символы, используя регулярное выражение, наконец он применяется рекурсивно проверить палиндром:
import re
rules = [
lambda s: any(x.isupper() for x in s),
lambda s: not s.isalpha()
]
def is_palindrome(s):
if any(rule(s) for rule in rules):
s = re.sub(r'[^\w]', '', s).lower()
if len(s) < 2:
return True
if s[0] != s[-1]:
return False
return is_palindrome(s[1:-1])
string = 'Are we not drawn onward, we few, drawn onward to new era?'
print(is_palindrome(string))
выходными данными является значение true для ввода выше.
Вы спрашиваете палиндром в Python. палиндромом может быть выполнена на строки, числа и списки. Однако, я просто написал простой код для проверки палиндрома строки.
# Palindrome of string
str=raw_input("Enter the string\n")
ln=len(str)
for i in range(ln/2) :
if(str[ln-i-1]!=str[i]):
break
if(i==(ln/2)-1):
print "Palindrome"
else:
print "Not Palindrome"
Настоящий простой способ сделать это
word = str(raw_input(""))
is_palindrome = word.find(word[::-1])
if is_palindrome == 0:
print True
else:
print False
И если/остальное здесь просто для фантазии выглядит. Вопрос о палиндром на Amazon'ы собеседовании для QA
def pali(str1):
l=list(str1)
l1=l[::-1]
if l1==l:
print("yess")
else:
print("noo")
str1="abc"
a=pali(str1)
print(a)
Я попытался с помощью этого:
def palindrome_numer(num):
num_str = str(num)
str_list = list(num_str)
if str_list[0] == str_list[-1]:
return True
return False
и он работал некоторое количество, но я не'т знать, если строка
word = "<insert palindrome/string>"
reverse = word[::-1]
is_palindrome = word.find(reverse)
print is_palindrome
Это был вопрос в идеально сост 101, Глава 1. Дает 0 для палиндром дает -1 на нет. Его простой, и не использовать циклы.