2015-09-30 2 views
2

Я решил научиться программировать, и поскольку это то, что все рекомендовали сначала, я начал разрабатывать Python. Я узнал, что я думаю, основы, в последнее время выясняя, если/else утверждения. Я подумал, что это небольшой вызов, я могу попытаться применить большинство вещей, которые я узнал, и взломать небольшую программу, которая что-то сделала. Поэтому я пытаюсь создать скрипт, который может читать файл или найти, есть ли конкретное слово в файле, что дает пользователю выбор. Вот код, который я написал, и не работает.Не могу понять, если/else синтаксис в Python

print "Hello, would you like to read a file or find whether or not some text is in a file?" 
choice = raw_input("Type 'read' or 'find' here --> ") 

if choice == "read": 
    readname = raw_input("Type the filename of the file you want to read here -->" 
    print open(readname).read() 
elif choice == "find": 
    word = raw_input("Type the word you want to find here --> ") 
    findname = raw_input("Type the filename of the file you want to search here --> ") 
    if word in open(findname).read(): 
     print "The word %r IS in the file %r" % (word, filename) 
    else: 
     print "The word %r IS NOT in the file %r" % (word, filename) 
else: 
    print "Sorry, don't understand that." 

Я всего скраб, и вы могли бы, вероятно, сказать, что, глядя на код, но в любом случае помощь будет оценена. Во-первых, Python дает мне синтаксическую ошибку прямо на print. Это не дает мне ошибку, когда я выделяю переменную строку над ней, поэтому я полагаю, что там есть проблема, но я ничего не могу найти в Интернете. Кроме того, если я выделил переменную строку, как я сказал, но наберите «find», когда я запустил ее (запустив часть elif). Я получаю сообщение об ошибке, что findname не определен, но я не могу найти, почему это не будет ? Во всяком случае, я уверен, что это явно очевидно, но эй, я учусь, и я бы с удовольствием, если бы кто-нибудь из вас сказал мне, почему этот код сосет :)

+0

, если вы используете питон 3+, то печать будет вызвать ошибку, так как синтаксис для печати есть: печати («некоторый текст») – PabTorre

ответ

3

в дополнение к недостающих скобках, отмеченных другой ответ, у вас также есть проблема:

findname = raw_input("Type the filename of the file you want to search here --> ") 
if word in open(findname).read(): 
    print "The word %r IS in the file %r" % (word, filename) 
else: 
    print "The word %r IS NOT in the file %r" % (word, filename) 

То есть вы определяете findname, но позже попытаетесь использовать filename, который не определен.

У меня также есть несколько предложений вы можете захотеть взглянуть на:

  • Используйте инструмент, как flake8 дать вам предложения относительно вашего кода (это будет пытаться помочь вам убедиться, что ваш код соответствует PEP8, в Python. Хотя это не будет ловить каждую ошибку в вашем коде.)
  • Попробуйте использовать IDE для обратной связи в реальном времени. There are many available; Я лично предпочитаю PyCharm.

Вот пример вывода flake8 «s:

$ flake8 orig.py 
orig.py:1:80: E501 line too long (92 > 79 characters) 
orig.py:5:80: E501 line too long (82 > 79 characters) 
orig.py:6:10: E901 SyntaxError: invalid syntax 
orig.py:9:80: E501 line too long (86 > 79 characters) 
orig.py:16:1: W391 blank line at end of file 
orig.py:17:1: E901 TokenError: EOF in multi-line statement 
+2

при соблюдении PEP8 не сделает код лучше, per-se. Это упростило бы чтение и отладку.:) – PabTorre

+2

@PabTorre, правильно, но, как вы можете видеть, он поймал SyntaxError, который заблокировал OP от прогресса. – mpontillo

3

У вас есть недостающие скобки на линии выше print линия -

readname = raw_input("Type the filename of the file you want to read here -->" 
                      ^
                  Parantheses missing 

Это должно быть -

readname = raw_input("Type the filename of the file you want to read here -->") 
0

Вы не вставили закрывающая скобка на этой линии:

readname = raw_input("Type the filename of the file you want to read here -->" 

заменить это на:

readname = raw_input("Type the filename of the file you want to read here -->" 

и используйте печать ("") вместо печати

print("Your message here") 
Смежные вопросы