Python 05: Cara ou cruz

Imos facer un sinxelo programa de escoller cara ou cruz, pero que nos servirá para aprender cousas moi importantes para os xogos.

O código do programa:

Isto é o que tes que escribir no file editor (si, si, escríbeo... non sexas lacazá/n!). Lembra non escreber os números de liña e copiar todo o resto tal cal está.

1. #Este xogo é para adiviñar se saiu cara ou cruz

2.

3. import random

4.

5. numero=random.randint(1,2)

6.

7. if numero==1:

8. lado='cara'

9. if numero==2:

10. lado='cruz'

11.

12. print ('Ola, como te chamas?')

13. meuNome=input()

14.

15. print (meuNome+', queres cara ou cruz?')

16. resposta=input()

17.

18. if resposta==lado:

19. print('Moi ben, '+meuNome+', saiu '+lado+', acabas de gañar un choripasto!')

20.

21. if resposta!=lado:

22. print('Mala sorte, '+meuNome+', saiu '+lado+', acabas de perder un precioso felakuti!')

Cando o teñas escrito, lembra que debes gardar o arquivo coa extensión .py e para probalo preme F5 ou pica en Run- Run Module.

O resultado:

Se todo vai ben, o resultado tivo que darche algo coma isto:

Ola, como te chamas?

Gran Tuchón

Gran Tuchón, queres cara ou cruz?

cruz

Moi ben, Gran Tuchón, saiu cruz, acabas de gañar un choripasto!

Por partes:

A primeira liña é un comentario, dos que xa falamos no anterior apartado

1. #Este xogo é para adiviñar se saiu cara ou cruz

A segunda liña (e outras máis) a deixamos en branco para separar un pouco as distintas partes do programa e facilitar así a súa lectura.

A terceira liña é unha sentencia import . As sentencias non son funcións, son instruccións que fan algo pero que non nos dan ningún valor como resultado, non se avalían a ningún valor. Con import, o que facemos é traer un Módulo, que son programas que veñen con Python e teñen funcións adicionais. Para alixeirar o programa non se incorporan por defecto, así que hai que traelas con import. En realidade, o que tes que lembrar de momento é que, se queres introducir azar no teu programa, deberás facer un import random ao principio do programa.

3. import random

Na liña 5 creamos unha variable numero, na que almacenamos o resultado dunha función pertencente ao módulo random, que é randint(x,y). Randint nos vai dar un integer, ou número enteiro, que estará entre o valor x e o valor y. Neste caso, só poderán ser os valores 1 ou 2.

P. ex. se queremos un enteiro ao chou entre o 1 e o 10 deberiamos poñer random.randint(1,10), se o queremos entre o 10 e o 15 random.randint(10,15)

5. numero=random.randint(1,2)

Nas liñas da 7 á 10 empregamos a sentencia if para facer unha comparación. É dicir, collemos dous valores e comprobamos se se cumple unha determinada condición que nos desexamos. Dependendo de se se cumple ou non, faremos que o programa faga unha cousa ou outra. Neste caso:

7. if numero==(1):

8. lado='cara'

9. if numero==(2):

10. lado='cruz'

Aquí o que facemos é crear unha variable lado e asignarlle unha cadea 'cara' ou unha cadea 'cruz' dependendo de se numero resultou ser 1 ou 2. Isto facémolo porque é máis doado aplicar o azar con randint a números que a cadeas.

Tamén é importante resaltar a indentación, que é o espazo que deixamos ao principio de cada liña. É moi importante respetala, xa que, aparte de servir para ler e entender máis doadamente o programa, o file editor pode dar erros se non a aplicamos ben. De momento, lembra que despois de cada if a seguinte liña está indentada (ten un espazo de tabulación)

Observa que poñemos dous signos =, xa que só empregamos un cando queremos asignar unha variable.

A continuación, nas liñas 12 e 13 saudamos ao xogador e lle pedimos o nome, para gardalo como meuNome, como xa vimos antes.

12. print ('Ola, como te chamas?')

13. meuNome=input()

As liñas 15 e 16 pregúntanlle ao xogador se quere cara ou cruz, e almacenamos o resultado na variable resposta. O xogador terá que escribir exactamente 'cara' ou 'cruz', se deixa un espazo, confunde unha letra, ou mesmo se pon unha maiúscula, o programa lle dirá que fallou. Máis adiante aprenderemos mellores maneiras de facer este programa para que non pasen esas cousas, pero de momento é mellor non complicármonos.

15. print (meuNome+', queres cara ou cruz?')

16. resposta=input()

As liñas da 18 á 22 voltan a facer unha comparación, esta vez para ver se o que escolleu o xogador (resposta) é igual que a variable lado que lle asignamos ao número que saiu da función randint. No caso de que sexa igual lle daremos un mensaxe de felicitación, en caso de que sexa diferente (o signo != quere dicir "non igual a") lle daremos un mensaxe de consolación. En ámbalas dúas mensaxes, incluímos a variable lado para que o xogador vexa o que saiu.

18. if resposta==lado:

19. print('Moi ben, '+meuNome+', saiu '+lado+', acabas de gañar un choripasto!')

20.

21. if resposta!=lado:

22. print('Mala sorte, '+meuNome+', saiu '+lado+', acabas de perder un precioso felakuti!')

Fluxograma:

Exercicios:

- Rescribe o programa colocando comentarios que expliquen o que se fai en cada unha das súas partes.

- Altera as mensaxes de benvida e/ou despedida.

- Tenta facer o fluxograma sen mirar o debuxo.

- Modifica o programa para que haxa unha terceira opción "canto".

- Serías capaz de facer que o programa servise para adiviñar unha tirada de dado? (precisarás da sentencia variable=int(variable), que convirte un dato de tipo string nun dato de tipo integer )