2015-08-16 49 views
-1

Я действительно новичок в Python и программировании (точнее, 2 дня). Я вошел в беспорядок, пытаясь придумать более сложный процесс, чем просто «Hello world». Мне было интересно, может ли кто-нибудь из вас сказать мне, почему это означает, что мои заявления о печати и elif недействительны. Я использую Python 2.7.10, спасибо!Python Invalid Синтаксис: утверждения Print и Elif

A = raw_input("Do you live in the US or Canada?") 
if A == " US" or "Canada": 
     print "Welcome!" 
else: 
    print "We're sorry, but your country is currently not supported!" 

B = int(raw_input("How much is your package?") 
     if B >= 25 
      print "Your shipping is $4.00" 
    elif B >= 50 
     print "Your shipping is $8.00" 
else: 
    print "Congrats, your shipping is free!" 
+1

1. отступ, 2. 'if A ==" US "или A ==" Канада ":' –

+1

3. Забудьте закрыть круглые скобки на строке 'B ='. – Kevin

+1

Если вы сделали это сами, это удивительно для 2-дневного ученика. Я должен сказать – ytpillai

ответ

0

Вероятно, первое, что вы замечаете питон, что соответствует отступам не просто хорошая идея, это является обязательным. Опытные программисты, пишут ли они Python или нет, всегда делают это так, так что это не имеет большого значения. Используйте пробелы (4 - это норма) и избегайте вкладок - измените свой редактор, чтобы заменить вкладку на 4 пробела.

Плохая идея использовать поплавок на денежные суммы из-за округления. Лучше использовать большой тип, например Decimal, или хранить сумму как int в центах, а затем вставлять десятичную точку при отображении. Для простоты я застрял с использованием float, но будьте осторожны.

У вас есть ряд логических ошибок в коде, а также проблемы со стилем. Стиль программирования - это не просто то, что выглядит красиво, это то, сможете ли вы понять свой код позже, когда вы вернетесь к нему.

Стиль точек:

Не используйте заглавный переменные. По соглашению ВЕРХНИЙ зарезервирован для констант

Используйте осмысленные имена переменных, а не А и В

Вот исправленная программа, с комментариями. Пожалуйста, прочитайте комментарии! :

# This is a comment, it is ignored by python 
# This is used later on by sys.exit() 
import sys 

# Logically the user would enter "Yes" or "No" to this quesion, 
# not US or Canada! 
ans = raw_input("Do you live in the US or Canada? ") # Notice the space after ? 

# Note how the condition has been expanded 
if ans == "US" or ans == "Canada": 
    print "Welcome!" 
else: 
    print "We're sorry, but your country is currently not supported!" 

    # Now what? Your program just carried on. This will stop it 
    sys.exit() 

# I'm using a floating point number for simplicity 
amount = float(raw_input("How much is your package? ")) 

# I changed this around, since 50 is also >= 25! 
# However, this is strange. Usually the more you spend the LESS the shipping! 
# You were missing the : after the condition 
if amount >= 50: 
    print "Your shipping is $8.00" 
    amount += 8   # This adds 8 to the amount 
elif amount >= 25: 
    print "Your shipping is $4.00" 
    amount += 4   # This adds 4 to the amount 
else: 
    print "Congrats, your shipping is free!" 

# print the amount showing 2 decimal places, rounding 
print "Amount to pay: $%.2f" % (amount) 

У вас есть еще много дел. Может быть, справиться с тем, что пользователь вводит более низкие или смешанные буквенные буквы для названия страны - и спросите себя, является ли вопрос логичным для пользователя.

Позже вы можете захотеть иметь список допустимых стран и использовать in, чтобы проверить, введен ли пользователь в действительную страну. Затем разверните его, чтобы использовать словарь, указав символы валюты, суммы доставки и курсы пересчета валют для каждой страны.

Наслаждайтесь Python!

-3

Исправлено это для вас :). Посмотрите, чтобы увидеть, что по-другому, и вы узнаете, молодые падаванин:

A = raw_input("Do you live in the US or Canada?") 

if A == "US" or A == "Canada": 
    print "Welcome!" 
else: 
    print "We're sorry, but your country is currently not supported!" 

B = float(raw_input("How much is your package?")) 

if B >= 25: 
    print "Your shipping is $4.00" 
elif B >= 50: 
    print "Your shipping is $8.00" 
else: 
    print "Congrats, your shipping is free!" 
+0

Спасибо, кучка, можете ли вы объяснить, какая разница float vs int делает на линии B = ? Благодаря! – Jack

+0

@Jack, 'int()' принимает только целые числа, a.k.a. целые числа. На самом деле это приведет к увеличению, если вы дадите ему строку типа ''23 .4''. 'float()' также будет принимать десятичные числа, например '.23 .4''. – Cyphase

+0

Плохая идея использовать поплавок на деньги из-за округления. Лучше использовать большой тип, например Decimal, или хранить сумму как int в центах, а затем вставлять десятичную точку при отображении. См. Также https://code.google.com/p/python-money/ – cdarke