Você está na página 1de 25

NUMERO PERFEITO print "Numeros perfeitos: " for i in range (1, 1000): SomaDivisores = 0 for j in range(1, i): if i % j == 0: SomaDivisores

= SomaDivisores + j if SomaDivisores == i: print i,

#Abum de Figurinhas class Album: def __init__(self,q,caminho): arq=open(caminho,'r') l=arq.readlines() arq.close() a=l.split(" ") a=map(int,a) self.a=a self.q=q def calcula_obtidas(self): return self.a def calcula_faltam(self): k=range(0,self.q) for i in range (1,self.q+1): if self.a[i] in k: self.d=k.index(a[i]) k.pop(d) return k

def calcula_repitidas(self): k=[] l=[] qd=0 for i in range (len(self.a)): if a[i] in l: qd+=1 k.append(a[i]) else: g=self.a.pop(i) l.append(g) print "A fig", a[i],"tem", qd, "repitidas" print "Relao de duplicadas: ", k #Programa Principal y=raw_input("Entre com o arquivo de fig: ") x= input(" Entre c a quantidade de fig do album: ") A=Album(x,y) print A.calcula_obtidas() print A.calcula_faltam() print A.calcula_repitidas()

#ano populao hc=1e9 hb=130000000 ano=1982 while hc>=hb: hc = hc*1.01 hb = hb*1.03 ano = ano + 1 print ano

#Clculo de e s=0 i=1 fat=1 j=1 while j>1e-20: fat=fat*i j=1./fat s=s+j i=i+1 print s

#Divisores Primos n=input("Entre com o nmero: ") s=0 i=0 j=1 l=[] for i in range(1,n+1): if n%i==0: while i>j: if i%j==0: s=s+1 j=j+1 if s==2: l.append(i) print l

#Divisores de um numero n=input ("Entre com um nmero") t=n while t>0: if n%t==0: print t t=t-1

#factorial: from math import* from math import* for n in range(1,101): print factorial(n)

#Fatorial: Sem import n=input("Valor de N: ") fat=1 for i in range(1,n+1): fat=fat*i print fat

#Fibonacci i=input("Diga o valor de N: ") a,b,c=(1,1,1) print 0, 1, while c<i: print c, c=a+b a=b b=c w=float(c)/a print "razao: ", w

#Igualar Populao hc=1e9 hb=130000000 ic=0.01 ib=0.03 ano=1982 while hc>=hb: hc=hc + hc*ic hb=hb + hb*ib ano=ano+1 print ano

#Imprimir 122333.. n=input("Valor de N: ") l=[] i=1 while i<n+1: l.append([i]*i) i=i+1 print l

#juros anoinicial = input ("Ano inicial: ") anoatual = input ("Ano atual: ") juros = input ("juros: ") valor = 10 a = (anoatual - anoinicial) while a > 0: valor = valor + valor*(juros/100.) a = a - 1 print valor

#Mais clculo de pi n=input("Quantidade de termos da Sequencia: ")

s=0 for i in range(0,n+1): t=((-1.)**i)/(2*i+1) s=s+t pi=4*s print "pi:", pi,

#Numero Perfeito i=1 while i<1000: s=0 for j in range(1,i): if i%j==0: s=s+j if s==i: print i i=i+1

#Nmeros Triangulares x=input("Quantos divisores o numero tem?") t=1 n=0 while x>n: n=0 s=((1+t)*t)/2 t=t+1 for k in range(1,(s+1)): if s%k==0: n=n+1 print s,t,n print "Valor do numero :", s

#Nmeros Triangulares: Saber qual nmero que tem um determinado valor n de divisores x=input("Quantos divisores o numero tem?") t=1 n=0 while x>n: n=0 s=((1+t)*t)/2 t=t+1 for k in range(1,(s+1)):

if s%k==0: n=n+1 print s,t,n print "Valor do numero :", s

# -*- coding: cp1252 -*#Srie de Fibonacci N=input("Valor de N: ") a=0 b=1 c=1 print a,c, while c<N: print c, c=a+b a=b b=c

#Soma de mltiplos N=input("Entre com o valor de N: ") s=0 for i in range(1,N): if i%3==0 or i%5==0: print i s=s+i print "Soma: ", s

#Triangulo de Pascal N=input("Ordem do Triangulo de Pascal: ") from math import* for n in range(0,N+1): print for k in range(0,n+1): print factorial(n)/(factorial(k)*factorial(n-k)),

#Triangulo: Area e tipo a=input("l1:") b=input("l2:") c=input("l3:") p=(a+b+c)/2. A=(p*(p-a)*(p-b)*(p-c))**(1./2) if (a+b)<c or (a+c)<b or (b+c)<a: print "No um Tringulo" else: print " um Tringulo" print "A rea do Tringulo vale:", A if a==b and b==c: print "Equiltero" if a!=b and a!=c and b!=c: print "Escaleno" else: print "Isosceles"

#Programa para integrar o quadrante de circulo pelo metodo monte carlos from math import sqrt from random import random def f(x): return sqrt(R**2-x**2) N = input("Entre com o nmero de pontos sorteados: ") R = input("Entre com o raio: ") abaixo = 0 for i in range(N): x = random() * R y = random() * R if y<f(x): abaixo += 1 print "area =", 1.*abaixo*R*R/N

#Divisores com def num = input('Entre com o nmero: ') def Div(num): divs=[] for i in range(1,num + 1): if num%i == 0: divs.append(i) return divs print 'Os divisores de ',num,'so ',Div(num)

#Numero Triangular com Def def Div(num): divs=[] for i in range(1,num + 1): if num%i == 0: divs.append(i) return divs num = 0 def Num(num): while len(Div(num))<100: num = num+1 return num print 'O nmero :', Num(num), 'com divisores :',Div(num)

#Programa para achar o MMC de uma lista de nmeros def tudo_um(lista): '''retorna True se lista for tudo 1; False caso contrrio''' for i in lista: if i <> 1: return False return True lista = list(input('entre com os nmeros separados por vrgulas: ')) div = 2 mmc = 1 while not tudo_um(lista): #divide lista por div dividiu = False for i in range(len(lista)): if lista[i]%div == 0: dividiu = True lista[i] /= div #se dividiu pelo menos 1 if dividiu: mmc *= div else: div +=1 print 'MMC =',mmc

1)Faa um programa que leia n nmeros e informe o maior nmero. n=input('entre com o tamanho da lista:') a=[0]*n for i in range (n): a[i]=input('entre com o numero:') print "Mximo:", max(a) 2)Faa um programa que leia n nmeros e informe a soma e a mdia dos nmeros. n=input('entre com o tamanho da lista:') a=[0]*n s=0 for i in range (n): a[i]=input('entre com o numero:') s=a[i] + s print "Soma:", s print s/n 3)Faa um programa que leia dez conjuntos de dois valores, o primeiro representand o o nmero do aluno e o segundo representando a sua altura em centmetros. Encontre o aluno mais alto e o mais baixo. Mostre o nmero do aluno mais alto e o nmero do a luno mais baixo, junto com suas alturas. #a=[[0,0]]*10 a=[] for i in range(10): a.append([0,0]) n=input('entre com o numero de alunos') for i in range(n): a[i][0],a[i][1]=input('entre com num e altura:') print a

NumAltMax = a[0][0] AltMax = a[0][1] for i in range (1,n): if a[i][1] > AltMax: AltMax=a[i][1] NumAltMax=a[i][0] print "Num:", NumAltMax, "altura", AltMax 4)Faa um Programa que leia um vetor de 10 nmeros reais e mostre-os na ordem invers a. n=input('entre com n:')

a=[0]*n b=[0]*n for i in range(n): a[i]=input('entre:') for i in range (n): b[i]=a[n-i-1] print b for i in range (n): print b[i], 5)Faa um Programa que leia dois vetores com 10 elementos cada. Gere um terceiro v etor de 20 elementos, cujos valores devero ser compostos pelos elementos intercal ados dos dois outros vetores. n=input('entre com n:') a=[0]*n b=[0]*n c=[0]*2*n for i in range(n): a[i]=input('entre com o numero para a') for i in range(n): b[i]=input('entre com o numero para b') for i in range (n): c[2*i]=a[i] c[2*i+1]=b[i] print c 6)Foram anotadas as idades e alturas de 10 alunos. Faa um Programa que determine quantos alunos com mais de 13 anos possuem altura inferior mdia de altura desses alunos. a=[] s=0 for i in range(10): a.append([0,0]) n=input('entre com o numero de alunos:') for i in range(n): a[i][0],a[i][1]=input('entre com a idade e altura:') if a[i][0]>13: s=s+1 print s 9)Utilize uma lista para resolver o problema a seguir. Uma empresa paga seus ven dedores com base em comisses. O vendedor recebe $200 por semana mais 9 por cento de suas vendas brutas daquela semana. Por exemplo, um vendedor que teve vendas b rutas de $3000 em uma semana recebe $200 mais 9 por cento de $3000, ou seja, um total de $470. Escreva um programa (usando um array de contadores) que determine quantos vendedores receberam salrios nos seguintes intervalos de valores: $200 - $299 $300 - $399 $400 - $499 $500 - $599 $600 - $699 $700 - $799 $800 - $899 $900 - $999 $1000 em diante

Desafio: Crie uma frmula para chegar na posio da lista a partir do salrio, s em fazer vrios ifs aninhados. n=input("entre com n") faixa=["<300","<400", "<500", "<600", "<700", "<800", "<900", "<1000",">1000"] c=[0]*10 for i in range (1, 10): c[i]=0 for i in range (n): vb=input ("entre com a venda bruta:") sal=0.09*vb+200 print sal ind = int(sal)/100 - 1 if ind >9: ind = 9 c[ind]=c[ind]+1 print " FAIXA/t FREQUENCIA" for i in range (1, 10): print faixa[i-1],"/t", c[i]

10)Em uma competio de salto em distncia cada atleta tem direito a cinco saltos. O r esultado do atleta ser determinado pela mdia dos cinco valores restantes. Voc deve fazer um programa que receba o nome e as cinco distncias alcanadas pelo atleta em seus saltos e depois informe o nome, os saltos e a mdia dos saltos. O programa de ve ser encerrado quando no for informado o nome do atleta. A sada do programa deve ser conforme o exemplo abaixo: Atleta: Rodrigo Curvllo Primeiro Salto: 6.5 m Segundo Salto: 6.1 m Terceiro Salto: 6.2 m Quarto Salto: 5.4 m Quinto Salto: 5.3 m Resultado final: Atleta: Rodrigo Curvllo Saltos: 6.5 - 6.1 - 6.2 - 5.4 - 5.3 Mdia dos saltos: 5.9 m n= input("quantos atletas?") atletas = [] for i in range(n): atletas.append([0,[0]*5]) for i in range (n): atletas[i][0]=input("entre com o nome:") for j in range(5): atletas[i][1][j] = input("entre com o salto "+str(j)+":") for i in range(n): print "Atleta:", atletas[i][0] print "Saltos:" for j in range(5): print atletas[i][1][j],"-", soma = 0 for j in range(5): soma = soma +atletas[i][1][j] media = soma/5

print "Media dos saltos:", media 1)Nome ao contrrio em maisculas. Faa um programa que leia um nome e em seguida o m ostre o nome de trs para frente utilizando somente letras maisculas. Dica: (funo upp er) s=input("qual o nome?") su=s.upper() l=list(su) print l l.reverse() print l s="".join(l) print s 2)Nome na vertical em escada. Faa um programa que leia um nome e o mostre em form ato de escada. F FU FUL FULA FULAN FULANO s=input("qual o nome") for i in range (len(s)): print s[:i+1] 3)Conta espaos e vogais. Leia uma string e conte: quantos espaos em branco existem na frase. quantas vezes aparecem as vogais a, e, i, o, u. s=input("entre com a frase") car=[" ","a","e","i","o","u"] cont=[0]*6 for i in range(6): print car[i], s.count(car[i])

4)Palndromo. Um palndromo uma seqncia de caracteres cuja leitura idntica se feita da direita para esquerda ou vice-versa. Por exemplo: OSSO e OVO so palndromos. Em tex tos mais complexos os espaos e pontuao so ignorados. A frase SUBI NO ONIBUS o exempl o de uma frase palndroma onde os espaos foram ignorados. Faa um programa que leia u ma seqncia de caracteres, mostre-a e diga se um palndromo ou no. a=input("entre com a frase ou palavra") l=list(a) x=l[0:len(l)+1] # da no mesmo fazer x=l[:] print x l.reverse() print l if x==l: print " palindroma" else: print "nao "

5)Uma maneira de se cifrar mensagens usada como brincadeira por crianas a conheci da por ZENIT-POLAR. Consiste em trocar todas as letras Z por P e vice-versa, tod as as letras E por O e vice-versa e assim por diante. Por exemplo: Texto original A DE SE CIFRAR MENSAGENSTexto cifrado : UMI MILOATI DO SO CAFTIT MOL ENIT-POLAR. x=raw_input("entre com o texto: ") s=list(x) for i in range (len(s)): if s[i]=="z": s[i]="p" if s[i]=="e": s[i]="o" if s[i]=="n": s[i]="l" if s[i]=="i": s[i]="a" if s[i]=="t": s[i]="r" print "".join(s) #"".join(s) tira de lista e faz voltar a frase normal...testar somente: print s e ver o que acontece

6)Jogo de Forca. Desenvolva um jogo da forca. O programa ter uma lista de palavra s lidas de um arquivo texto e escolher uma aleatoriamente. O jogador poder errar 6 vezes antes de ser enforcado. Digite uma letra: A -> Voc errou pela 1 vez. Tente de novo! Digite uma letra: O A palavra : _ _ _ _ O Digite uma letra: E A palavra : _ E _ _ O Digite uma letra: S -> Voc errou pela 2 vez. Tente de novo! palavra_oculta="python" palavra_construida=["_"]*len(palavra_oculta) contador_erros=0 while contador_erros < 6 and palavra_construida != list(palavra_oculta): letra = raw_input("digite uma letra: ") if letra in palavra_oculta: posicao = palavra_oculta.index(letra) palavra_construida[posicao]=letra print " ".join(palavra_construida) else: contador_erros=contador_erros + 1 if contador_erros <6: print"vc errou pela", contador_erros, "vez. Tente de novo" else: print "vc errou pela", contador_erros, "vez." if contador_erros < 6: print "PARABENS, Voce descobriu" else: print "Perdeu"

1)Escreva uma funo que recebendo como argumentos a altura e o sexo de uma pessoa, retorne seu peso ideal, utilizando as seguintes frmulas: Para homens: (72.7*h) 58 Para mulheres: (62.1*h) - 44.7 (h = altura) def pesoIdeal(altura, sexo): if sexo=="H": peso = (72.7*altura) - 58 else: peso = (62.1*altura)-44.7 return peso alt, sx = input("altura e sexo: ") print pesoIdeal(alt, sx) 2)Escreva uma funo (booleana) que receba como argumento um ano e retorne True caso o mesmo seja bissexto e False caso contrrio. def bissexto(ano): return (ano %4 == 0 and ano % 100 !=0) or ano %400==0

3)Escreva uma funo que receba como argumentos trs nmeros e retorne o maior deles. def maior(a,b,c): m=a if b>m: m=b if c>m: m=c return m 4)Escreva uma funo que calcule (e retorne) o fatorial de n (argumento da funo). def fatorial(n): a=1 for x in range(1,n+1): a=x*a return a 5)Sendo H= 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, escreva uma funo que determine H com N termos. N ser um parmetro da funo. def H(n): a=0 for x in range(1,n+1): a=a + 1./x return a 6)Escreva uma funo que calcule e retorne a mdia aritmtica de uma lista de inteiros. A funo recebe esta lista como parmetro. def media(a): s=0. for i in range(len(a)):

s=s+a[i] med = s/len(a) return med def media2(a): s=0. for x in a: s=s+x med = s/len(a) return med 7)Escreva uma funo que determine e retorne o maior elemento de uma lista de inteir os. A funo recebe esta lista como parmetro def maior(a): m=a[0] for i in range (1, len(a)): if a[i]>m: m=a[i] return m 8)Data com ms por extenso. Construa uma funo que receba uma data no formato DD/MM/A AAA e devolva uma string no formato D de mesPorExtenso de AAAA. Opcionalmente, v alide a data e retorne NULL caso a data seja invlida. def data(s): meses=list["janeiro", "fevereiro","marco", "abril", "maio", "junho", "julho" , "agosto", "setembro", "outubro", "novembro", "dezembro"] return s[0:2]+" de "+meses[int(s[3:5])-1] + "de" +s[6:]

TRABALHOS: #Problema do Josephus r="s" print "Programa para ver qual condenado sobrevive ao jogo sanquinrio!" while r.lower()!="n": if r.lower()!="s": print "Por favor, responda apenas com 's' ou 'n'" else: condenados=input("Digite o nmero de condenados: ") contagem=input("Digite a contagem: ") lista = range(1,condenados+1) for i in range(condenados-1): if contagem==len(lista): lista=lista[:len(lista)-1] else: var=contagem%len(lista) lista=lista[var:]+lista[:var-1] print "O condenado sobrevivente o de nmero:",lista[0] print r=raw_input("Deseja jogar novamente?(s/n)")

#Preenchimento de cheques: #Faa um programa que leia uma quantia e mostre esse valor por extenso em reais. P or ex: entrada: 143,57 ; sada: cento e quarenta e trs reais e cinqenta e sete centa vos. def centenas(valor): centenas=["","cem","duzentos","trezentos","quatrocentos","quinhentos","seice ntos","setecentos","oitocentos","novecentos"] return centenas[valor/100] def dezenas(valor): dezenas=["","dez","vinte","trinta","quarenta","cinquenta","sessenta","setent a","oitenta","noventa"] return dezenas[valor%100/10] def unidades(valor): unidades=["","um","dois","trs","quatro","cinco","seis","sete","oito","nove"] return unidades[valor%10] valor=input("Digite a quantia do cheque:") print centenas(valor),"e",dezenas(valor),"e",unidades(valor),"reais."

#Gerao de scripts de filme de terror aleatrios #Programa que a partir de um arquivo de texto,recria-o de forma diferente from random import randint arquivo=open('c:/tabelas.txt','r') nomes_1=[] nomes_2=[] nomes_3=[] nomes_4=[] nomes_5=[] nomes_6=[] nomes_7=[] nomes_8=[] nomes_9=[] nomes_10=[] nomes_11=[] nomes_12=[] for i in range(13): s=arquivo.readline() nomes_1.append(s[:-2]) del(nomes_1[0]) for i in range(13): s=arquivo.readline() nomes_2.append(s[:-2]) del(nomes_2[0]) for i in range(13): s=arquivo.readline() nomes_3.append(s[:-1]) del(nomes_3[0])

for i in range(13): s=arquivo.readline() nomes_4.append(s[:-1]) del(nomes_4[0]) for i in range(13): s=arquivo.readline() nomes_5.append(s[:-1]) del(nomes_5[0]) for i in range(13): s=arquivo.readline() nomes_6.append(s[:-1]) del(nomes_6[0]) for i in range(13): s=arquivo.readline() nomes_7.append(s[:-1]) del(nomes_7[0]) for i in range(13): s=arquivo.readline() nomes_8.append(s[:-1]) del(nomes_8[0]) for i in range(13): s=arquivo.readline() nomes_9.append(s[:-1]) del(nomes_9[0]) for i in range(13): s=arquivo.readline() nomes_10.append(s[:-1]) del(nomes_10[0]) for i in range(13): s=arquivo.readline() nomes_11.append(s[:-1]) del(nomes_11[0]) for i in range(13): s=arquivo.readline() nomes_12.append(s[:-1]) del(nomes_12[0]) s=open("texto","w") s.write("Um grupo de "+nomes_1[randint(0,11)]+" "+nomes_2[randint(0,11)]+" est pa rticipando de "+nomes_3[randint(1,11)]+" quando um deles "+nomes_4[randint(0,11) ]+" porque "+nomes_5[randint(0,11)]+" invade o recinto e "+nomes_6[randint(0,11) ]+" todo mundo ,com exceo de um casal formado por "+nomes_7[randint(0,11)]+" e "+n omes_8[randint(0,11)]+" que conseguem fugir correndo, enfrentando inmeros perigos principalmente "+nomes_9[randint(0,11)]+" . Aps muitas cenas de suspense e efeit os especiais,eles conseguem chegar at "+nomes_10[randint(0,11)]+" onde presenciam "+nomes_11[randint(0,11)]+" e no final acabam "+nomes_12[randint(0,11)]+" at a c ontinuao do filme, se este der bilheteria, quando ento comea tudo de novo.") s.close()

#Justificando um texto def justifica(tamanho=80): '''Justifica(tamanho) -> tamanho o numero de colunas a serem usadas para a justificao Programa que justifica um texto na quantidade de colunas desejadas pelo usurio e retorna o texto no arquivo saida_justificada.txt localizado na mesma pasta deste arquivo.''' arq=open("saida.txt",'r+') lista_texto=arq.readlines() texto=' '.join(lista_texto) lista_texto_justificado=[] while len(texto)>tamanho: lista_texto_justificado.append(primeiro_branco(tamanho,texto)[1]) texto=primeiro_branco(tamanho,texto)[0] lista_texto_justificado.append(primeiro_branco(len(texto),texto)[1]) texto=primeiro_branco(len(texto),texto)[0] texto_justificado=''.join(lista_texto_justificado) arq.close() saida=open("saida_justificada.txt",'w') saida.write(texto_justificado) saida.close() #Esta parte do programa divide o texto original em 2 pedaos: #O primeiro pedaco, texto_auxiliar, a linha que est sendo justificada #O segundo pedao, texto, o que sobrou do texto, quer ser justificado depois. #Vrias condies so consideradas, dependendo do ultimo elemento da linha #justificada. def primeiro_branco(tamanho,texto): texto_auxiliar='' #Condio: s uma palavra em toda a linha. if ' ' not in texto[:tamanho]: texto_auxiliar+=texto[:tamanho] texto=texto[tamanho:] diferenca=0 #Condio: ltimo elemento da linha ' '. elif texto[tamanho-1]==' ': texto_auxiliar+=texto[:tamanho-1] texto=texto[tamanho:] diferenca=1 #Condio: ltimo elemento da linha no meio de uma palavra. elif tamanho<len(texto) and texto[tamanho]<>' ': variavel_auxiliar=tamanho-1 while texto[variavel_auxiliar]<>' ': variavel_auxiliar-=1 diferenca=tamanho-variavel_auxiliar

texto_auxiliar+=texto[:tamanho-diferenca] texto=texto[tamanho+1-diferenca:] #Condio: outras. else: texto_auxiliar+=texto[:tamanho] texto=texto[tamanho+1:] diferenca=0 #Condio: linha comea com ' '. if len(texto_auxiliar)>1 and texto_auxiliar[0]==' ': if texto_auxiliar[1]<>' ': texto_auxiliar=texto_auxiliar[1:] elif texto_auxiliar[2]<>' ': texto_auxiliar=texto_auxiliar[2:] diferenca+=1 #Retorna o texto restante e a linha formatada pela funo insere branco. return [texto,insere_branco(diferenca,texto_auxiliar,tamanho)] #Insere os espaos em branco necessrios para justificar a linha. def insere_branco(diferenca,texto_auxiliar,tamanho): numero_de_brancos=texto_auxiliar.count(' ') #Se existe s uma palavra na linha, os espaos sao colocados no final dela. if numero_de_brancos==0: for i in range(diferenca): texto_auxiliar+=' ' #Coloca os espaos em branco nas outras situaes. else: brancos_restantes=diferenca cont=1 #Contador auxiliar

#enquanto o contador diferente do comprimento do texto e existem #brancos a serem colocados: while cont<>len(texto_auxiliar) and brancos_restantes>0: #Se ponteiro est no 'branco'e ainda tem brancos a serem colocados, #coloque mais um branco nessa posio. if texto_auxiliar[cont]==' ' and brancos_restantes>0: texto_auxiliar=texto_auxiliar[:cont+1]+texto_auxiliar[cont:] brancos_restantes-=1 cont+=1 #Se o ponteiro chegou no final e ainda existem espaos em brancos #a serem colocados, volte o ponteiro para o incio. if cont==len(texto_auxiliar)-1 and brancos_restantes>0: cont=1 #Seno, aumente o ponteiro em uma casa. else: cont+=1 #Se s existir branco na linha, tire a linha if texto_auxiliar== ''.join(' '*tamanho) or texto_auxiliar== ''.join(' '*(ta manho-1)): texto_auxiliar='' #Seno, pule para a prxima linha. else: texto_auxiliar+='\n'

#Retorna a linha j formatada. return texto_auxiliar

#Programa para resolvar o problema das 8 damas, onde dispe as 8 damas em um #tabuleiro 8x8 sem que as mesmas se ataquem. class Damas: def __init__(self,i,j,acabou=False): self.linha = i self.coluna = j #lista criada para colocar as damas posicionadas. Os valores '-1' sao #para no dar conflito quando for comparado a lista da soluo quando #a posio da linha no momento inicial for '0' por exemplo self.damas = [-1]*8 #quando a posio vlida, o valor da linha entra pra soluo self.solucao = [0]*8 self.acabou = acabou def ataca_na_diagonal(self): for a in range(0,self.coluna): if abs(self.solucao[a]-self.solucao[self.coluna])==abs(a-self.coluna ): return True return False #funo que busca se a posio da linha j se encontra ocupada por alguma #dama ou se existe outra dama atacando em diagonal def posicao_valida(self): if self.linha in self.damas: return False elif self.ataca_na_diagonal(): return False else: return True def avanca_coluna(self): self.coluna += 1 self.linha = 0 #funo que avana a linha, e se o valor da linha sair do tabuleiro, faz #com que volte uma coluna, pegue a soluo da mesma e avance mais uma vez. #quando h retorno de colunas, alguns valores necessrios das listas da #soluo e da posio das damas so ajustados para '-1' a fim de no causar #conflitos em comparaes futuras em relao as posies vlidas. def avanca_linha(self): self.linha += 1 if self.linha == 8: self.solucao[self.coluna]= -1 self.damas[self.coluna]=-1 self.coluna -= 1 if self.coluna == -1:

self.acabou = True self.linha = self.solucao[self.coluna] self.damas[self.coluna]=-1 self.avanca_linha() dama = Damas(0,0) while not dama.acabou: dama.solucao[dama.coluna] = dama.linha if dama.posicao_valida(): dama.damas[dama.coluna] = dama.linha dama.avanca_coluna() if dama.coluna == 8: #a disposio das damas feita de modo que os ndices so as colunas e os #elementos so as linhas onde se encontram as damas print dama.solucao dama.coluna -= 2 dama.linha = dama.solucao[dama.coluna] dama.damas[6],dama.damas[7]=-1,-1 dama.avanca_linha() else: dama.avanca_linha()

#forca import random class Boneco: def __init__(self): self.boneco=['','','','','','',''] self.boneco[0]= ''' +---------+ | | | +--+ | / .. \ | | -- | | ---| || | +-------+ | X===| |===X | | | | +-------+ | || || | || || | <_| |_> | +-----------------+ | | | | +-----------------+''' self.boneco[1]=''' +---------+ | | | +--+

| / .. \ | | -- | | ---| || | +-------+ | X===| |===X | | | | +-------+ | || | || | <_| | +-----------------+ | | | | +-----------------+''' self.boneco[2]=''' | | | +--+ | / .. \ | | -- | | ---| || | +-------+ | X===| |===X | | | | +-------+ | | | | +-----------------+ | | | | +-----------------+''' self.boneco[3]=''' +---------+ | | | +--+ | / .. \ | | -- | | ---| || | +-------+ | X===| | | | | | +-------+ | | | | +-----------------+ | | | | +-----------------+''' self.boneco[4]=''' +---------+ | | | +--+ | / .. \

+---------+

| | -- | | ---| || | +-------+ | | | | | | | +-------+ | | | | +-----------------+ | | | | +-----------------+''' self.boneco[5]=''' +---------+ | | | +--+ | / .. \ | | -- | | ---| || | | | | | | | | +-----------------+ | | | | +-----------------+''' self.boneco[6]=''' +---------+ | | | | | | | | | | | | | | | +-----------------+ | | | | +-----------------+''' def mostrar_boneco(self,erros): print self.boneco[erros] class Palavra:

def __init__(self,palavra): '''inicia uma instancia palavra e uma instacia lista com os traos que vai ser preenchido conforme forem acertadas''' self.palavra=palavra self.lista = ['-']*len(palavra) def mostra_palavra(self): '''mostra a palavra com as letras acertadas preenchidas''' x='' print x.join(self.lista) def muda_palavra(self,letra): '''Muda a palavra, se algo for mudado retorna True se nao retorna False' '' if letra in self.palavra: lista =[''] contador = 0 verificador = False for i in palavra: if i==letra: self.lista[contador]=letra verificador = True contador+=1 return verificador def teste_palavra(self): x = '' if x.join(self.lista) == self.palavra: return True else: return False palavra=random.choice(['joao','paulo','importante','miley','justin','verde']) pala = Palavra(palavra) boneco = Boneco() string='' erro = 0 while erro < 6: letra = raw_input('escolha uma letra: ') if pala.muda_palavra(letra): string +=letra boneco.mostrar_boneco(erro) pala.mostra_palavra() else: erro+=1 print 'voce errou bobao' boneco.mostrar_boneco(erro) pala.mostra_palavra() if pala.teste_palavra(): print ' parabens vc ganhou' break if erro ==6: print ' bobao vc perdeu'

Você também pode gostar