2022-10-11 21:42:13 +00:00
#!/usr/bin/env python
2022-10-25 18:15:32 +00:00
#old name: elementi yada bileşiği tahmin et.py
2022-10-25 18:42:10 +00:00
2022-10-11 21:42:13 +00:00
from random import randint as ri
2022-10-13 22:40:06 +00:00
puan , soru = ( 0 , 0 )
evet = True
hayı r = False
sor = evet #oyun modunu sorması için
2022-11-06 21:37:05 +00:00
sembolik = [ ' H ' , ' He ' , ' Li ' , ' Be ' , ' B ' , ' C ' , ' N ' , ' O ' , ' F ' , ' Ne ' , ' Na ' , ' Mg ' , ' Al ' , ' Si ' , ' P ' , ' S ' , ' Cl ' , ' Ar ' , ' K ' , ' Ca ' , ' Sc ' , ' Ti ' , ' V ' , ' Cr ' , ' Mn ' , ' Fe ' , ' Co ' , ' Ni ' , ' Cu ' , ' Zn ' , ' Ga ' , ' Ge ' , ' As ' , ' Se ' , ' Br ' , ' Kr ' , ' Rb ' , ' Sr ' , ' Y ' , ' Zr ' , ' Nb ' , ' Mo ' , ' Tc ' , ' Ru ' , ' Rh ' , ' Pd ' , ' Ag ' , ' Cd ' , ' In ' , ' Sn ' , ' Sb ' , ' Te ' , ' I ' , ' Xe ' , ' Cs ' , ' Ba ' , ' Hf ' , ' Ta ' , ' W ' , ' Re ' , ' Os ' , ' Ir ' , ' Pt ' , ' Au ' , ' Hg ' , ' Tl ' , ' Pb ' ]
sembolik_yaygı n = [ ' hidrojen ' , ' helyum ' , ' lityum ' , ' berilyum ' , ' bor ' , ' karbon ' , ' azot / nitrojen ' , ' oksijen ' , ' flor ' , ' neon ' , ' sodyum ' , ' magnezyum ' , ' alüminyum ' , ' silisyum ' , ' fosfor ' , ' kükürt ' , ' klor ' , ' argon ' , ' potasyum ' , ' kalsiyum ' , ' skandiyum ' , ' titanyum / titan ' , ' vanadyum ' , ' krom ' , ' mangan / manganez ' , ' demir ' , ' kobalt ' , ' nikel ' , ' bakı r ' , ' çinko ' , ' galyum ' , ' germanyum ' , ' arsenik ' , ' selenyum ' , ' brom ' , ' kripton ' , ' rubidyum ' , ' stronsiyum ' , ' itriyum ' , ' zirkonyum ' , ' niyobyum ' , ' molibden ' , ' teknetyum ' , ' rutenyum ' , ' rodyum ' , ' paladyum ' , ' gümüş ' , ' kadmiyum ' , ' indiyum ' , ' kalay ' , ' antimon ' , ' tellur ' , ' iyot ' , ' Ksenon ' , ' sezyum ' , ' baryum ' , ' hafniyum ' , ' tantal ' , ' tungsten ' , ' renyum ' , ' osmiyum ' , ' iridyum ' , ' platin ' , ' altı n ' , ' cı va / civa ' , ' Talyum ' , ' kurşun ' ]
2022-10-13 22:40:06 +00:00
2022-10-13 22:45:33 +00:00
bileşik = [ ' H2O ' , ' HCl ' , ' H2SO4 ' , ' HNO3 ' , ' CH3COOH ' , ' CaCO3 ' , ' NaHCO3 ' , ' NH3 ' , ' Ca(OH)2 ' , ' NaOH ' , ' KOH ' , ' CaO ' , ' NaCl ' ]
2022-10-13 22:49:14 +00:00
bileşik_yaygı n = [ ' su ' , ' tuz ruhu / hidroklorik asit ' , ' zaç yağı / sülfürik asit ' , ' kezzap / nitrik asit ' , ' asetik asit / sirke asidi / sirke ruhu ' , ' kireç taşı ' , ' yemek sodası / sodyum bikarbonat / kabartma tozu ' , ' amonyak ' , ' sönmüş kireç / kalsiyum hidroksit ' , ' sud kostik / sodyum hidroksit ' , ' potas kostik / potasyum hidroksit / potasyum hidrat ' , ' sönmemiş kireç / kalsiyum oksit ' , ' yemek tuzu / sodyum klorür / sofra tuzu / tuz ' ]
2022-10-13 22:40:06 +00:00
bileşik_bitti , sembolik_bitti = ( False , False )
2022-10-11 21:42:13 +00:00
soru_türü = " random "
2022-10-13 22:40:06 +00:00
soru_türü_açı klaması = """ 3 soru türü var, bu soru türleri;
random \t = altdakkilerden birini sorar ( her seferinde değişir )
2022-10-11 21:42:13 +00:00
sembolik = sembollerden sorar ( C , O , H gibi )
2022-10-13 22:40:06 +00:00
bileşik \t = bileşiklerden sorar ( H2O gibi )
hangisini seçiyorsun ?
2022-10-11 21:42:13 +00:00
"""
soru_sı ralaması = " random "
2022-10-13 22:40:06 +00:00
soru_sı ralaması _açı klaması = """ 3 soru sı ralaması var, bu soru sı ralamaları ;
random \t = altdakilerden birini yapar ( her seferinde değişir )
yaygı n \t = yaygı n sorup sembolik halini cevap olarak ister ( " hidroklorik asit " cevap : HCI gibi )
sembolik = sembolik sorup yaygı n halini cevap olarak ister ( HCI cevap : " hidroklorik asit " gibi )
hangisini seçiyorsun ?
2022-10-11 21:42:13 +00:00
"""
2022-10-13 22:40:06 +00:00
def init ( ) :
2022-10-22 18:35:50 +00:00
global bileşik_bitti , sembolik_bitti
if soru_türü == " sembolik " : bileşik_bitti = True
2022-10-13 22:40:06 +00:00
if soru_türü == " bileşik " : sembolik_bitti = True
def str_to_list ( string ) :
return string . split ( sep = None , maxsplit = 0 )
def soru_turu_sor ( ) :
global soru_türü
print ( soru_türü_açı klaması , end = " " )
while True :
user_cevap = input ( " $ " ) . casefold ( )
if user_cevap == " random " or user_cevap == " sembolik " or user_cevap == " bileşik " :
soru_türü = user_cevap
break
elif f " { user_cevap } " == ' ' :
print ( f " bir şey yazı lmadı , default olarak soru türü \" { soru_türü } \" olarak seçildi \n " )
break
else : print ( f " \" { user_cevap } \" bir soru türü değil, sadece \" random \" , \" sembolik \" ve \" bileşik \" yazmanı z lazı m. " )
def soru_siralamasi_sor ( ) :
global soru_sı ralaması
print ( soru_sı ralaması _açı klaması , end = " " )
while True :
user_cevap = input ( " $ " ) . casefold ( )
if user_cevap == " random " or user_cevap == " yaygı n " or user_cevap == " sembolik " :
soru_sı ralaması = user_cevap
break
elif f " { user_cevap } " == ' ' :
print ( f " bir şey yazı lmadı , default olarak soru türü \" { soru_sı ralaması } \" olarak seçildi \n " )
break
else : print ( f " \" { user_cevap } \" bir soru sı ralaması değil, sadece \" random \" , \" yaygı n \" veya \" sembolik \" yazmanı z lazı m. " )
2022-10-11 21:42:13 +00:00
def tahmin ( yaygı n_adı , sembolik_formülü ) :
2022-10-13 22:40:06 +00:00
global puan , soru
if soru_sı ralaması == " random " :
random_int = ri ( 0 , 1 )
if random_int == 0 :
başlı k = yaygı n_adı
cevap = sembolik_formülü
if random_int == 1 :
başlı k = sembolik_formülü
cevap = yaygı n_adı
elif soru_sı ralaması == " yaygı n " :
başlı k = yaygı n_adı
cevap = sembolik_formülü
elif soru_sı ralaması == " sembolik " :
başlı k = sembolik_formülü
cevap = yaygı n_adı
else :
print ( f " \" { soru_sı ralaması } \" diye bir soru sı ralaması bulunamadı . geçerli soru sı ralamaları : random, yaygı n, sembolik (hepsinin açı klaması kaynak kodda) " )
exit ( 1 )
if ' / ' in cevap : cevap = cevap . split ( ' / ' )
if not isinstance ( cevap , list ) : cevap = str_to_list ( cevap )
2022-10-11 21:42:13 +00:00
2022-10-13 22:40:06 +00:00
soru + = 1
user_cevap = input ( f " puanı n: { puan } \n { soru } ) { başlı k } \n $ " ) or ' n '
if user_cevap in cevap :
print ( " afferim, doğru cevap! (+10 puan) " )
puan + = 10
return True
elif user_cevap . casefold ( ) in [ " exit " , " çı k " , " çı kı ş " ] :
print ( " oynadı ğı n için teşekkür ederim, görüşürüz. 👋 " )
exit ( 0 )
elif puan < = 0 :
print ( " üzgünüm, yanlı ş cevap. " )
return False
else :
print ( " üzgünüm, yanlı ş cevap (-5 puan) " )
puan - = 5
return False
def oyunu_baslat ( ) :
global bileşik_bitti , sembolik_bitti
while True :
if len ( sembolik_yaygı n ) < = 0 : sembolik_bitti = True
if len ( bileşik_yaygı n ) < = 0 : bileşik_bitti = True
if soru_türü == " random " :
random_int = ri ( 0 , 1 )
if not bileşik_bitti and random_int == 0 :
sor = ri ( 0 , len ( bileşik_yaygı n ) - 1 )
if tahmin ( bileşik_yaygı n [ sor ] , bileşik [ sor ] ) :
bileşik_yaygı n . pop ( sor )
bileşik . pop ( sor )
if not sembolik_bitti and random_int == 1 :
sor = ri ( 0 , len ( sembolik_yaygı n ) - 1 )
if tahmin ( sembolik_yaygı n [ sor ] , sembolik [ sor ] ) :
sembolik_yaygı n . pop ( sor )
sembolik . pop ( sor )
if not bileşik_bitti and soru_türü == " bileşik " :
sor = ri ( 0 , len ( bileşik_yaygı n ) - 1 )
if tahmin ( bileşik_yaygı n [ sor ] , bileşik [ sor ] ) :
bileşik_yaygı n . pop ( sor )
bileşik . pop ( sor )
if not sembolik_bitti and soru_türü == " sembolik " :
sor = ri ( 0 , len ( sembolik_yaygı n ) - 1 )
if tahmin ( sembolik_yaygı n [ sor ] , sembolik [ sor ] ) :
sembolik_yaygı n . pop ( sor )
sembolik . pop ( sor )
if bileşik_bitti and sembolik_bitti :
print ( f " puanı n: { puan } \n oyunu oynadı ğı nı z için teşekkürler, umarı m ezberlemenizde yardı mcı olmuşumdur ve umarı m eğlenmişsinizdir. " )
exit ( 0 )
2022-10-11 21:42:13 +00:00
if __name__ == ' __main__ ' :
2022-10-13 22:40:06 +00:00
if sor :
soru_turu_sor ( )
soru_siralamasi_sor ( )
init ( )
oyunu_baslat ( )