Python, если оператор elif else
Я пытаюсь создать программу с python, которая вычисляет стоимость доставки.
Однако я не могу запустить программу там, где она работает правильно.
То, что моя общая сумма равна той же сумме, составляет 6 долларов США для США и 8 долларов США для Канады. Кажется, я не могу пройти.
total = raw_input('What is the total amount for your online shopping?')
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= "50":
print "Shipping Costs $6.00"
elif total <= "100":
print "Shipping Costs $9.00"
elif total <= "150":
print "Shipping Costs $12.00"
else:
print "FREE"
if country == "Canada":
if total <= "50":
print "Shipping Costs $8.00"
elif total <= "100":
print "Shipping Costs $12.00"
elif total <= "150":
print "Shipping Costs $15.00"
else:
print "FREE"
Ответы
Ответ 1
- вы должны получить целое число из raw_input, а не строку. используйте
int()
.
- значения сравнения, такие как 50, 100, 150,... также должны быть
integer
.
Ниже приведен фиксированный код.
total = int(raw_input('What is the total amount for your online shopping?'))
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= 50:
print "Shipping Costs $6.00"
elif total <= 100:
print "Shipping Costs $9.00" # improved indentation
elif total <= 150:
print "Shipping Costs $12.00" # improved indentation
else:
print "FREE"
if country == "Canada":
if total <= 50:
print "Shipping Costs $8.00"
elif total <= 100:
print "Shipping Costs $12.00"
elif total <= 150:
print "Shipping Costs $15.00"
else:
print "FREE"
Ответ 2
Вы не можете сравнивать строки с числами. Вместо этого сначала конвертируйте в int, а затем сравните.
Например:
if int(total) < 50
Также могут помочь переменные, чтобы избежать дублирования.
Ответ 3
Вы сравниваете число строк. Это невозможно, например, сравнение apple
с orange
, которое больше? Компьютер не понимает этого, ему нужно сравнить размер.
Для этого нам нужно преобразовать его в целое число. Используйте функцию int()
. Здесь:
#convert it to an integer straight away
total = int(raw_input('What is the total amount for your online shopping?'))
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= 50:
print "Shipping Costs $6.00"
elif total <= 100:
print "Shipping Costs $9.00"
elif total <= 150:
print "Shipping Costs $12.00"
else:
print "FREE"
if country == "Canada":
if total <= 50:
print "Shipping Costs $8.00"
elif total <= 100:
print "Shipping Costs $12.00"
elif total <= 150:
print "Shipping Costs $15.00"
else:
print "FREE"
Надеюсь, это поможет!
Ответ 4
Когда вы сравниваете строки, он делает это лексикографически, как в телефонной книге. Например:
"a" < "b"
: True
"bill" < "bob"
: Истинный
"100" < "3"
: True
Если вы хотите сравнить числа в порядке их подсчета, вам нужно использовать тип int.
total = int(raw_input('What is the total amount for your online shopping?'))
Затем измените все строковые литералы в вашем коде, например "50"
, на целые литералы, такие как 50
.
Ответ 5
Это:
total = raw_input('What is the total amount for your online shopping?')
создает строку. Сравнение строк и чисел не очень четко определено. Сначала вам нужно преобразовать общее число в число. Пример:
total = int(raw_input('What is the total amount for your online shopping?'))
(это игнорирует обработку входных ошибок, например, когда пользовательский ввод не является числом)
Обратите внимание, что изменения поведения в Python 2.x и Python 3.x. В Python 2.x:
Объекты разных типов, кроме разных числовых типов и разных типов строк, никогда не сравнивайте одинаковые; такие объекты упорядочиваются последовательно, но произвольно (так что сортировка гетерогенного массива дает согласованный результат).
...
Подробности реализации CPython: объекты разных типов, кроме номеров, упорядочены по их именам типов; объекты того же типа, которые не поддерживают правильное сравнение, упорядочиваются по их адресу.
а в Python 3.x:
Объекты разных типов, кроме разных числовых типов, никогда не сравниваются с равными.
Ответ 6
При использовании raw_input пользовательский ввод вводится как строка, и вы не можете вычислять числа в формате строк. Поэтому вам нужно изменить свой ввод строки на целое число, чтобы выполнить сравнения.
Вы можете сделать следующее:
total = int(raw_input('What is the total amount for your online shopping?'))
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= 50:
print "Shipping Costs $6.00"
elif total <= 100:
print "Shipping Costs $9.00"
elif total <= 150:
print "Shipping Costs $12.00"
else:
print "FREE"
elif country == "Canada":
if total <= 50:
print "Shipping Costs $8.00"
elif total <= 100:
print "Shipping Costs $12.00"
elif total <= 150:
print "Shipping Costs $15.00"
else:
print "FREE"
else:
print "Try Again"
Ответ 7
Это нравится добавлять яблоки и дома, чтобы получить общее, что невозможно. Он должен быть того же типа, в этом случае целочисленного типа, чтобы получить общее количество. Используйте int(), чтобы преобразовать строку в целое число.
total = int(raw_input('What is the total amount for your online shopping?'))
также может быть (но менее предпочтительным):
total = raw_input('What is the total amount for your online shopping?')
total = int(total)
Ответ 8
input возвращает строку
если total должен возвращать ввод для математических операций, то вы должны использовать плавающий ввод
total = (raw_input ('Какова общая сумма ваших покупок в Интернете?')) всего = поплавок (всего)
Ответ 9
Я просто свежее здесь и программирование на питоне. Я пытался решить вашу проблему. Надеюсь, это поможет тебе.
if country == 'US':
if total <= 50:
print ('Shipping Costs $6.00')
elif total <= 100:
print ('Shipping Costs $9.00')
elif total <= 150:
print ('Shipping Costs $12.00')
else:
print ('FREE')
elif country == 'Canada':
if total <= 50:
print ('Shipping Costs $8.00')
elif total <= 100:
print ('Shipping Costs $12.00')
elif total <= 150:
print ('Shipping Costs $15.00')
else:
print ('FREE')
else:
print ('Country name is case sensetive so do it perfectly')