2016-05-04 1 views
0

Я начинающий писатель кода на питоне, и я начинаю с программы преобразования топлива. Программа запрашивает ваше имя, а затем преобразует мили за галлон или в километрах на литр скорости. В настоящее время программа работает нормально, пока не дойдет до конвертации в линию MPG, а затем, когда вы нажмете y, она ничего не делает. Забавная вещь, никакая синтаксическая ошибка не была возвращена. помогите, поскольку я ничего не могу найти на нем :(Я пишу программу преобразования топлива и ее не работает :(

import time 

y = 'y', 'yes', 'yep', 'yea', 'ye' 
n = 'n', 'no', 'nup', 'nay' 

name = str(input("Hey, User, whats your name? ")) 

time.sleep(1.5) 

print("Alright", name, "Welcome the the *gravynet* Fuel Efficiency Converter!") 

time.sleep(1.5) 

str(input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ")) 

if y is True: 

miles = int(input("How far did you travel (in miles): ")) 

galls = int(input("How much fuel did you consume (in gallons): ")) 

mpgc = (galls/miles) 

print("The MPG Rate is: ", int(mpgc)) 

time.sleep(2) 

print("test print") 
if y is (not True): 

    input(str("Would you like to convert KPL instead? (y/n): ")) 

    time.sleep(1.5) 

    if y is True: 

    kilometers = int(input("How far did you travel (in kilometers): ")) 

    litres = int(input("How much fuel did you consume (in litres): ")) 

    kplc = (litres/kilometers) 

    print("The KPL Rate is: ", int(kplc)) 

    time.sleep(3) 

    exit() 


    if y is not True: 

    print("No worries") 

    time.sleep(1.5) 

    print("Thanks", name, "for using *gravynet* Fuel Efficiency Coverter") 

    time.sleep(1.5) 

    print("Have a good day!") 

    time.sleep(1.5) 

    exit() 

    else : 
    print("Sorry, invalid response. Try again") 
    exit() 


elif not y: 

    print("Please use y/n to answer") 

    time.sleep(2) 

elif not n: 

    print("Please use y/n to answer") 

    time.sleep(2) 

жаль, если вы считаете, что это плохо, но я только начал питона и мне нужна помощь :)

+0

Ну, во-первых, 'if y is True' не имеет никакого смысла. Он всегда будет ложным. 'y' - постоянный кортеж. И это не буквальный «Истинный». –

+1

Кстати, в python 'is' означает что-то другое. Просто используйте '==' пока. – JustDucky

ответ

0

is KEYW ord в python проверяет, указывают ли две переменные на одно и то же место в памяти. y никогда не укажет на ту же ячейку памяти, что и singleton True, потому что это значение является строкой. Я подозреваю, что вы имеете в виду сделать что-то вроде

inp = str(input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ")) 
if inp in y: 
    ... 
+0

Да, Pythonista упомянул то же самое в приведенном выше комментарии. Спасибо также за ваш вклад;) – thegravyman

1

Жестоко урезана и отступы фиксирована (я думаю ....)

if y is True и точно так же if y is not True не имеет смысла здесь.

Кроме того, говоря о is .. is и == могут работать как эквивалентные выражения, иногда для проверки «равенства», но необязательно. == проверяет равенство, тогда как is проверяет идентификатор объекта. Вы должны использовать == для проверки равенства между двумя объектами. За исключением None, в этом случае для этого обычно используется is вместо ==.

Вы конвертируете в str в кучу мест без необходимости. Они уже струны.

В вашем конверсии mpg у вас уже есть число с плавающей запятой (возможно, int). Здесь нет необходимости конвертировать в int. Предположим, что mpg равно < 1. Затем int литье сделает этот возврат 0:

Ваша математика также обратная. миль за галлон. Аналогично, километры за галлон.

name = input("Hey, User, whats your name? ") 
print("Alright", name, "Welcome the the *gravynet* Fuel Efficiency Converter!") 
mpg = input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ") 

if mpg in y: 

    miles = int(input("How far did you travel (in miles): ")) 
    galls = int(input("How much fuel did you consume (in gallons): ")) 

    mpgc = miles/galls 

    print("The MPG Rate is: ", mpgc) 

else: 
    kpl = input("Would you like to convert KPL instead? (y/n): ") 

    if kpl in y: 
     kilometers = int(input("How far did you travel (in kilometers): ")) 
     litres = int(input("How much fuel did you consume (in litres): ")) 
     kplc = kilometers/litres 
     print("The KPL Rate is: ", kplc) 

    else: 

     print("No worries") 
     print("Thanks", name, "for using *gravynet* Fuel Efficiency Coverter") 
     print("Have a good day!") 
+0

thankyou так много, я не знал об использовании «in», и очень ценно, что вы делитесь этими знаниями. Большое спасибо за вашу помощь – thegravyman

0

Вы не можете непосредственно принимать y, как нажимается с клавиатуры, вы должны принять его в качестве входного сигнала (нажатие кнопки ENTER будет необходимо), сохранить его, проверьте, если он удовлетворяет условиям, а затем применить логику.

Я вижу, что вы пытались определить y и n как кортеж (намеренно или нет). В этом случае я предполагаю, что вы также хотите взять эти другие слова как yes или or.

В этом случае вы можете применить эту логику;

inp = input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ") 
if inp in y: # Check if inp corresponds any of the words defined in y 
    # Things to do if `yes` or anything similar entered. 

Некоторые примечания:

  • Вам не нужно использовать str() после приема ввода, если вы используете Python3 (который, кажется, вы). Потому что input() возвращает строку.

  • В где-то сделал что-то вроде этого:

    input(str("Would you like to convert KPL instead? (y/n): "))

    что еще более reduntant, потому что введенное вами значение уже строка.

  • Вы также не назначали некоторые входы любой переменной во всем коде . Вы должны назначить их, если вы будете использовать их позже.

Пожалуйста, позаботьтесь об этих проблемах.

+0

Спасибо за подсказки и советы, я научился использовать input = 123, если вводить в y тогда: .... Но спасибо в любом случае за помощь – thegravyman

Смежные вопросы