Jump to content
Fórum Script Brasil
  • 0

duvida iniciante Metodos STRING


pest4

Question

Boas a todos, estou a estudar python, e foram-me propostos exercicios para revisão de ciclos for e métodos string, resolvi vários exercicios sem ajuda ou algum tipo de dica, mas fiquei parado num que o mais provável é ter uma resolução fácil mas não estou a lá chegar. O enunciado é o seguinte:

Sopa de letras. Crie uma função sopa(str)-> que dada uma string imprima

uma tabela como descrita abaixo:

(a) Dada a palavra faça o shift para a direita

>>> sopa(’abcdef’)

abcdef

bcdefa

cdefab

defabc

efabcd

fabcde

:wacko:

Ou seja eu tenho de criar uma função em que inserindo uma string ela faz-me um shift para a direita...Alguma dica? Ficaria eternamente grato. Obrigado

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

A dica é o fatiamento (slicing) de strings. Python 2:

s = raw_input("String: ")
for i in s[:-1]:
    s = s[1:] + s[0]
    print s
Python 3:
s = input("String: ")
for i in s[:-1]:
    s = s[1:] + s[0]
    print (s)

Link to comment
Share on other sites

  • 0
A dica é o fatiamento (slicing) de strings. Python 2:

s = raw_input("String: ")
for i in s[:-1]:
    s = s[1:] + s[0]
    print s
Python 3:
s = input("String: ")
for i in s[:-1]:
    s = s[1:] + s[0]
    print (s)

Muito obrigado tinha ideia que era assim mas não sabia como aplicar o ciclo for...estou a perceber os slices que colocaste já abri o idle e testei esse e de outras maneiras, mas se eu quiser fazer um shift ao centro para me fazer um print semelhante a este:

abcdef

bcafde

cabefd

já não percebo outra vez....desculpa lá e obrigado pela paciência desde já.

Link to comment
Share on other sites

  • 0

Aí já é um pouco mais difícil (Python 3):

def sopa(s, i):
    print (s)
    for j in range(i):
        s = s[1: int(len(s)/2)] + s[0] + s[-1:] + s[int(len(s)/2): -1]
        print (s)

s = "abcdef"
i = 2

sopa(s, i)

Link to comment
Share on other sites

  • 0

bom dia, no seguimento de métodos STRING tenho uma duvida sobre esse assunto estou a tentar preceber como e que defino o simétrico de uma STRING por exemplo:

São exemplos de palavras simétricas ’abba’,’a’,’aa’,’aba’ ou ’aabbaa’, não são

palavras simétricas ’ab’,’abca’.

Crie uma função booleana sim(str)-> bool que devolve True se a string

define uma palavra simétrica.

Se alguém me poder elucidar sobre este problema. Obrigado

Link to comment
Share on other sites

  • 0
coolbee, use a técnica de fatiamento nos exemplos anteriores.

por exemplo

def sim(s):

s = raw_input("Valor Lógico para palavras simétricas: ")

for i in s[]:

s =

i =

print s

mas preciso de dar slice no meio da palavra e certas palavras são maiores que outras para alem do mais se não for par a nivel de numero de letras nunca e simetrica

como e que defino o s de modo a que independentemente do tamanho da palavra ele tem de cortar ao meio e avaliar se a segunda parte da palavra invertida e igual a primeira parte?

Edited by coolbee130
Link to comment
Share on other sites

  • 0

Uma técnica interessante é reduzir ao máximo a complexidade do problema e uma vez resolvido ir aumentando a complexidade aos poucos. Neste caso comece com uma palavra de tamanho fixo e par, por exemplo 4. Depois faça com tamanho fixo impar e por último com tamanho variável.

Edited by Kakao
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...