0

This is a part of my code. I want to get the value of x to work with. But it’s showing that x is not defined. Please solve.

https://code.sololearn.com/cuR12GBoyorv/?ref=app

23rd Jun 2021, 10:07 AM
Soumaya Islam Rimi
Soumaya Islam Rimi - avatar
11 Answers
+ 1
leap_year=int(input()) def previous(year): for i in range(year-4,year): if (i%4)==0: if (i%100)==0: if (i%400)==0: x=i #use =, not == break else: pass else: x=i break else: pass return x #ident to out of loop print(previous(leap_year)) #use x=I, not x==I. and print returned value.
23rd Jun 2021, 12:16 PM
Jayakrishna 🇮🇳
+ 1
Soumaya Islam Rimi 3 mistakes there I wrote comments about it. x==I compares x with I. x=I will assign I to x. You written return x in else part. But you need it in out of loop. This returned value is sent to function calling statement. So catch and display like print(previous(leap_year))
23rd Jun 2021, 1:26 PM
Jayakrishna 🇮🇳
+ 1
Assign returned value in calling function and use it. x = previous(leap_year) #this x variable is different from the x variable in function . But you have same values after calling...
23rd Jun 2021, 2:05 PM
Jayakrishna 🇮🇳
+ 1
Thank you so so much..really that was the problem... Now you fixed it...
23rd Jun 2021, 2:18 PM
Soumaya Islam Rimi
Soumaya Islam Rimi - avatar
+ 1
You're welcome...
23rd Jun 2021, 2:19 PM
Jayakrishna 🇮🇳
0
Thanks.. Can you elaborate
23rd Jun 2021, 1:13 PM
Soumaya Islam Rimi
Soumaya Islam Rimi - avatar
0
Is that clears or you asking something else part..?
23rd Jun 2021, 1:29 PM
Jayakrishna 🇮🇳
0
How can i use the value of x in another function.. i called this function inside another..and than used x but that's the error
23rd Jun 2021, 1:48 PM
Soumaya Islam Rimi
Soumaya Islam Rimi - avatar
0
""" Soumaya Islam Rimi there are some corner cases where your code will not work, even with Jayakrishna🇮🇳 correction ^^ to cover all cases, your code must not limit test to a four years range values, as some leap years are skipped by more than 4 years: 1900 is not a leap year, so if you input 1901 to 1903 in your program, you will get an error because x was not defined (range tested start from 1897 to 1899, but previous leap year is 1896) instead, rather test years by decrementing until you got a leap year: """ leap_year=int(input()) def previous(y): while True: y -= 1 if not y%400 or (y%100 and not y%4): return y print(previous(leap_year)) """ should your function return the actual argument if it's a leap year, or are you expected the previous leap year except the argument? in first case, move the decrementation line after the test, to first test the argument given ;) """
23rd Jun 2021, 7:19 PM
visph
visph - avatar
0
visph yes..I just removed errors. Because test cases passed i didn't check logic. But it's giving output 1896 for input 1900 . But first time hearing "some leap years skipped more than 4yrs." Yes it's error for 1901. I doubted it that it's x defined in if part then how works for all cases but heard reply it passing so stopped hunting.. Actually it's a single function from total program . Op shared details in message. I tried there it's corrections to work for full code.. I shared all via DM
23rd Jun 2021, 8:44 PM
Jayakrishna 🇮🇳
0
Jayakrishna🇮🇳 I didn't say that 1900 doesn't work (as tested range start from argument-4)... if purpose was to exclude argument ^^ "some leap years skipped more than 4 years" is obvious given the rules: leap year if divisible by 400 or (by 4 and not by 100)... so every years divisible by 100 except those divisible by 400 are not leap years (exception to the divisible by 4 rule) ;P
23rd Jun 2021, 8:55 PM
visph
visph - avatar