Törmäsin ongelmaan, jossa random.randint() palauttaa aina luvun 1, vaikka sulkeiden sisään laittaisi mitä. Olen tekemässä viopen kurssia ja siellä on muunnos kivi-paperi-sakset pelistä, jossa tietokone arpoo yhden vaihtoehdon kolmesta. En saa siis konetta arpomaan mitään muuta kuin yhden ja saman joka kierroksella.
Osaisiko joku auttaa eteenpäin?
Tässä koodia, jonka kirjoittelin (keskeneräinen, koska huomasin tuon ongelman enkä ruvennut tekemään enempää):
import random kierrokset = 1 voitot = 0 tasapelit = 0 def arvonta(): lista = ["Jalka", "Ydinase", "Torakka"] cpu = random.randint(1,3) if cpu == "1": cpu = "Jalka" elif cpu == "2": cpu = "Ydinase" elif cpu == "3": cpu = "Torakka" print("Tietokone valitsi: ",cpu) def main(): while True: kierrokset = 1 voitot = 0 tasapelit = 0 valinta = input("Jalka, Ydinase vai Torakka? (Lopeta lopettaa): ") if valinta == "Lopeta": print("Pelasit",kierrokset,"kierrosta, joista voitit",voitot," ja pelasit tasan ",tasapelit,"peliä.") break else: kierrokset = kierrokset + 1 print("Sinä valitsit: ",valinta) arvonta() if __name__ == "__main__": main()
Minulla tuo arvonta toimii kyllä ihan hyvin.
Kuitenkin luulen, että vertailujen tulisi olla tyyliin "cpu == 1", koska 1 on luku eikä merkkijono.
Olisiko tuolla viopen selainpohjaisessa tulkissa jokin häikkä sitten ?
Lisäys:
Lisäsin tuohon print-käskyn näyttää mitä kone arpoo. Aina tulee ykkönen :(
Jalka, Ydinase vai Torakka? (Lopeta lopettaa): Jalka
Sinä valitsit: Jalka
1
Tietokone valitsi: Jalka
Jalka, Ydinase vai Torakka? (Lopeta lopettaa): Ydinase
Sinä valitsit: Ydinase
1
Tietokone valitsi: Jalka
Jalka, Ydinase vai Torakka? (Lopeta lopettaa): Torakka
Sinä valitsit: Torakka
1
Tietokone valitsi: Jalka
Jalka, Ydinase vai Torakka? (Lopeta lopettaa): Lopeta
Pelasit 1 kierrosta, joista voitit 0 ja pelasit tasan 0 peliä.
Kuulostaa erikoiselta, mutta jos suorittamasi koodi on varmasti yllä oleva, niin minäkin epäilisin, että vika on Viopen suoritusympäristössä.
Esim. tässä suoritettuna koodi toimii oikein:
http://www.tutorialspoint.com/
(sivu ei hyväksy ä-merkkiä, joten pitää muuttaa Sinä->Sina)
random.randintin sijasta kannattaa käyttää random.choicea, joka valitsee listasta satunnaisen alkion. Vältyt siten turhilta muunnoksilta.
>>> from random import choice >>> lista = ["Jalka", "Ydinase", "Torakka"] >>> choice(lista) 'Torakka' >>> choice(lista) 'Jalka' >>> choice(lista) 'Jalka'
Viope testaa ensin 1, sitten 2 ja lopulta 3 "satunnaisluvun" kyseisessä tehtävässä. Toiminta lienee sen takia, että saavat tarkistettua tulosteen omaan vertailutulosteeseensa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.