python - Tkinter: String variables not working -


i have made program science asks symbol of n element , must type in element problem can't tell if got answer wrong keeps saying correct!,

here code,

# import modules tkinter import * import random, time  # window setup root = tk() root.title('element finder') root.state('zoomed')  # elements  """  = h, hydrogen  b = he, helium  c = o, oxygen  d = c, carbon  e = n, nitrogen  f = ne, neon  g = u, uranium  h = na, sodium  = ar, argon  j = k, potassium  k = mg, magnesium  l = cl, chlorine  m = b, boron  n = au, gold  o = pd, palladium  p = kr, krypton  q = ca, calcium  r = pm, promethium  s = ag, silver  t = rb, rubidium  u = y, yurium  v = ir, iridium  w = pt, platnium  x = ti, titanium  y = hg, mercury  z = er, erbium  """  # variables element = stringvar() guess = stringvar() answer = stringvar()  def question():     guess.set('')     element.set('')     r = random.randint(1, 26)     if r == 1:         element.set('h')     elif r == 2:          element.set('he')     elif r == 3:         element.set('o')     elif r == 4:         element.set('c')     elif r == 5:         element.set('ne')     elif r == 6:         element.set('u')     elif r == 7:         element.set('na')     elif r == 8:         element.set('ar')     elif r == 9:         element.set('k')     elif r == 10:         element.set('mg')     elif r == 11:         element.set('cl')     elif r == 12:         element.set('b')     elif r == 13:         element.set('au')     elif r == 14:         element.set('pd')     elif r == 15:         element.set('kr')     elif r == 16:         element.set('ca')     elif r == 17:         element.set('pm')     elif r == 18:         element.set('ag')     elif r == 19:         element.set('rb')     elif r == 20:         element.set('y')     elif r == 21:         element.set('ir')     elif r == 22:         element.set('pt')     elif r == 23:         element.set('ti')     elif r == 24:         element.set('n')     elif r == 25:         element.set('hg')     elif r == 26:         element.set('er')  def check():     e = element.get()     g = guess.get()     if e == 'h' , g == 'hydrogen' or 'hydrogen' or 'hydrogen':         answer.set('correct!')     if e == 'he' , g == 'helium' or 'helium' or 'helium':         answer.set('correct')     if e == 'o' , g == 'oxygen' or 'oxygen' or 'oxygen':         answer.set('correct!')     if e == 'c' , g == 'carbon' or 'carbon' or 'carbon':         answer.set('correct!')     if e == 'ne' , 'neon' or 'neon' or 'neon':         answer.set('correct!')     if e == 'u' , g == 'uranium' or 'uranium' or 'uranium':         answer.set('correct!')     if e == 'na' , g == 'sodium' or 'sodium' or 'sodium':         answer.set('correct!')     if e == 'ar' , g == 'argon, argon' 'argon':         answer.set('correct!')     if e == 'k' , g == 'potassium' or 'potassium' or 'potassium':         answer.set('correct!')     if e == 'mg' , g == 'magnesium' or 'magnesium' or 'magnesium':         answer.set('correct!')     if e == 'cl' , g == 'chlorine' or 'chlorine' or 'chlorine':         answer.set('correct!')     if e == 'b' , g == 'boron' or 'boron' or 'boron':         answer.set('correct!')     if e == 'au' , g == 'gold' or 'gold' or 'gold':         answer.set('correct!')     if e == 'pd' , g == 'palladium' or 'palladium' or 'palladium':         answer.set('correct!')     if e == 'kr' , g == 'krypton' or 'krypton' or 'krypton':         answer.set('correct!')     if e == 'ca' , g == 'calcium' or 'calcium' or 'calcium':         answer.set('correct!')     if e == 'pm' , g == 'promethium' or 'promethium' or 'promethium':         answer.set('correct!')     if e == 'ag' , g == 'silver' or 'silver' or 'silver':         answer.set('correct!')     if e == 'rb' , g == 'rubidium' or 'rubidium' or 'rubidium':         answer.set('correct!')     if e == 'y' , g == 'yurium' or 'yurium' or 'yurium':         answer.set('correct!')     if e == 'ir' , g == 'iridium' or 'iridium' or 'iridium':         answer.set('correct!')     if e == 'pt' , g == 'platnium' or 'platnium' or 'platnium':         answer.set('correct!')     if e == 'ti' , g == 'titanium' or 'titanium' or 'titanium':         answer.set('correct!')     if e == 'n' , g == 'nitrogen' or 'nitrogen' or 'nitrogen':         answer.set(g + ' correct')     if e == 'hg' , g == 'mercury' or 'mercury' or ' mercury':         answer.set('correct!')     if e == 'er' , g == 'erbium' or 'erbium' or 'erbium':         answer.set('correct!')     else:         answer.set('incorrect.')     question()  # question label(root, text='what element has symbol:', fg='black', font='20').pack(side=top) e = label(root, textvariable=element, fg='blue', font='20').pack(side=top) = entry(root, textvariable=guess, font=20).pack(side=top) button(root, text='check', fg='green', command=check).pack(side=top) c = label(root, textvariable=answer, font=20, fg='blue').pack(side=top) question() 

thanks in advance!

instead of 'g == hydrogen' or 'hydrogen' or 'hydrogen'you can g.lower() == 'hydrogen'

the issue here is:

if g == 'hydrogen' or 'hydrogen' or 'hydrogen' 

evaluates as

 if (g == 'hydrogen') or ('hydrogen') or 'hydrogen' 

the latter parts of expression evaluate true hence error.

you can simplify code great deal creating dictionary:

d = {1: 'h', 2: 'he', ... } 

and replace huge chunk of if element.set(d.get(r))


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -