2016-09-27 11 views
-1

Ich habe eine Datei namens helloworld.simon gemacht. In There ich geschrieben habe:Python Wenn Variable in Variable

Public class helloworld { 
main = (main.method()); 
main { 
    console.print("Hello World"); 
    } 

Und ich habe diesen Code Geschrieben:

Public = ("Public") 
Private = ("Private") 
code = open('helloworld.simon' , 'r') 
print(code.read()) 
if Public in code: 
    print("Pub") 
else: 
    print("J") 

And The Output ist:

Public class helloworld { 
main = (main.method()); 
main { 
    console.print("Hello World"); 
    } 

J 
+1

Was ist Ihre Frage? –

+0

Es gedruckt "J" das ist das Problem albern! Lol – andre3wap

+1

Hinweis: 'in' sollte für String-Objekte, nicht Dateiobjekte verwendet werden – Kevin

Antwort

0

Ändern Sie diese Zeile:

code = open('helloworld.simon' , 'r')

Um dies:

with open('helloworld.simon' , 'r') as f: 
    lines = f.readlines() 
    if any([line for line in lines if Public in line]): 
     print("Pub") 
    else: 
     print("J") 
+1

Dies druckt immer noch "J", oder? '" Public "in [" Öffentliche Klasse helloworld {\ n ", ...]' wird immer noch als False ausgewertet. – Kevin

+0

@Kevin das druckt nicht "J" –

+0

Seltsam, es druckt "J" auf meiner Maschine. (übrigens, ich bin nicht derjenige, der downvoted) – Kevin

1

Datei-Lesen ist sequentiell. Sobald Sie eine Datei (mit print(code.read()) lesen kippe Sie wieder lesen, es sei denn, Neustart mit code.seek(0) Lesen

Public = ("Public") 
Private = ("Private") 
code = open('helloworld.simon' , 'r') 
print(code.read()) 
code.seek(0) 
if Public in code.read(): 
    print("Pub") 
else: 
    print("J") 
code.close() 

Ausgänge:

Pub 

Wenn Sie code.seek(0) Kommentar gibt J