+ 3
Legality identifier
Hello, I have a Python Assignment, and I have to find the identifier legality and justification. However, I only have learned about data type and the teacher is not tough about justification and legal. I learned that on YouTube, my problem is how to write that in Python and execute that. I got confused not finding a way to write the code. Ex: identifier = "Boys and Girls" is_legal = identifier.identifier() if is_legal: print(f"{identifier} is a legal identifier.") else: print(f"{identifier} is not a legal identifier.") This example is too advanced because the teacher did not teach this yet. I have to use simple commands. Could anyone give me a guide?
22 Respostas
+ 1
no function version and no iskeyword checking:(assuming importing modules is also not yet taught)
#put all your identifiers in a tuple
test = ('5boys', 'Boys and Girls', 'number_of_birds', 'None', 'or', 'and', '-continue')
#iterate through the tuple and print the result.
for s in test:
if s.isidentifier():
print(s, '(L) (R) (useful)')
else:
print(s, '(I) (NR) (not useful)')
+ 5
Maybe you mean the isidentifier() method of the string.
https://www.w3schools.com/JUMP_LINK__&&__python__&&__JUMP_LINK/ref_string_isidentifier.asp
This function will tell you if you are allowed to use the text as a name in your code, for example as a variable name or function name. An identifier is valid, if it only contains letter, numbers and underscores, and it cannot begin with number.
+ 3
Tibor Santa
interesting.
Python's string methods is quite comprehensive.
cases where it fails is Python keywords: None, and, or, if...
'None'.isidentifier() returns True
but
None = 500
returns an error.š
While reading help(str.isidentifier), there is also a reference to keyword.iskeyword(s). This is used to check if s is a built-in Python keyword.
you have to add
import keyword
to use it.
Perhaps it might be useful if you want to check if a string is already a Python keyword use it as part of the validity check?Of course, It depends on your teacher's requirements.
+ 1
can you post your actual code with the actual given identifier you are testing? It is hard to tell from these bits and pieces of information.
from the code you gave, you wrote:
is_legal = identifier.identifier()
maybe it should be
is_legal = identifier.isidentifier()
as Tibor Santa suggested?
+ 1
other than you can't start a variable name with '-', so -continue should be _continue, The rest of the code does not give me any idea on what needs to be done, the input parameters and the expected output...
Perhaps others here can make more sense of this.
Yeah, it's confusing alright...
+ 1
maybe something like this? I added an iskeyword check because keywords also can't be used as variable names.
import keyword as kw
def validator(s):
if s.isidentifier() and not kw.iskeyword(s):
return '(L) (R) (useful)'
return '(I) (NR) (not useful)'
test = ('5boys', 'Boys and Girls', 'number_of_birds', 'None', 'or', 'and', '-continue')
for i in test:
print(i, validator(i))
+ 1
Robin Marma ,
This is not a string, so you won't be able to test it.
-continue
This is a string, so you will be able to test it.
"-continue"
print("-continue".isidentifier()) # False
+ 1
Bob_Li, def and if statement, not taught yet. So advanced command prompts are not allowed yet. The teacher mentioned in this practical Assignment we will learn
How to read different objects through the keyboard
How to write meaningful user prompts
How to write meaningful output
How to use Python reference variables.
He also provided data-type examples (int, float, bool)
Could this be the input function related to this question?
Anyway, thanks for your time, I'll try to find a solution for this.
+ 1
Bob_Li, your example is beautiful and readable thanks for that.
I'll use that way to evaluate, I hope the teacher expectations are differentš¤£š¤£š¤£
+ 1
Bob_Li, what do you mean by evaluating, i don't know the right word to say that why I used evaluate.
0
The identifier is already given. first one is this,-> (-continue) and I asked from senior he said use the identifier variable and put the Legal or not inside the parentheses and justify the variable, But it gets the error.
0
https://sololearn.com/compiler-playground/cG1WGWqA43HD/?ref=app
The teacher hasn't taught us that much we are still getting basic command, so i can't use that command yet.
0
Maybe I am defining the question the wrong way.
-continue i want this identifier output as illegal and for justification not useful
5boys Also illegal i know that but i want to print this as illegal.
I am also confusing you guysš
š
sorry for that.
There is a valid identifier given
number_of_birds=10 could you show me how to evaluate in Python this is legal so I need to put inside parentheses to refer to legal as a (L)
0
Rain, I tried this too, but I don't want the output as a bool type.
I have to assign this value into a variable (i think) (legal(L) illegal(i) not recommended (NR \R)). Variable already given -continue this variable is the first one.
Anyway thanks to you all.
0
ok, so perhaps you just need to concentrate on what are the condtions needed to write a valid python identifier.
A valid identifierĀ can have letters (uppercase and/or lowercase), digits and underscores.
The first letter of an identifier should be either a letter or an underscore.
You cannot use keywords like int , while etc. as identifiers.
0
Well I create a dictionary it should right.
https://sololearn.com/compiler-playground/cQVw7FXuiFuv/?ref=app
0
Robin Marma
you might be printing the correct answers, but YOU are doing the evaluating, not the program itself. It is essentially one big fancy print statement.
what if new words are added? You would have to manually update the dictionary. This defeats the purpose of writing a program.
Also, evaluating whether an identifier is meaningful or not is a far more complex task than your teacher might expect...
0
evaluating, or making the assignment or decision on what value to give to the key in your dictionary.
If you need to write it yourself, then the program is just simply printing, not helping you make the decision.
0
Robin Marma
have the teacher taught you about imports?
Because without the keyword module, the results will not be able to detect Python's keywords and it will be wrong for some cases.
the better version will be:
import keyword as kw
# put all the identifiers you want to test in this tuple
test = ('5boys', 'Boys and Girls', 'number_of_birds', 'None', 'or', 'and', '-continue')
#test the identifiers one by one
for s in test:
if s.isidentifier() and not kw.iskeyword(s):
print(s, '(L) (R) (useful)')
else:
print(s, '(I) (NR) (not useful)')
0
Bob_Li, I didn't understand your question, š
š
language barrier causes the problem for me.