2016-01-03 12 views
1

У меня проблемы с программой, которую я создал. Я не совсем понимаю, в чем проблема. Однако я не могу придумать, что искать для решения проблемы. Так как это так, я заранее извиняюсь, если это дублирующий вопрос.Что вызывает ошибку в этой программе

# convert.py 
# A program to convert Celsius temps to Fahrenheit 

def main(): 
    print("Hello", end=" ") 
    print("this program will convert any 5 different celsius temperatures to fahrenheit.") 
    c1, c2, c3, c4, c5 = eval(input("Please enter 5 different celsius temperatures seperated by commas: ")) 
    print(c1, c2, c3, c4, c5) 
    for i in range(5): 
     c = ("c" + str(i + 1)) 
     print(c) 
     fahrenheit = 9/5 * c + 32 
     print("The temperature is", fahrenheit, "degrees Fahrenheit.") 
    input("The program has now finished press enter when done: ") 

main() 

Эта программа работает до тех пор, пока в первом цикле не будет присвоена инструкция назначения Фаренгейта. Я уверен, что проблема связана с переменными и наиболее вероятным неправильным способом, которым я их назначил. Поэтому я был бы очень признателен, если бы кто-нибудь мог указать, что я делаю неправильно, и почему это не сработает.

+0

99 раз из 100, если вы пытаетесь динамически обращаться к переменным, вы делаете что-то неправильно. Держите вход как кортеж ('temperature = eval (input (...))') и перебирайте его ('для температуры в условиях:') –

ответ

2

довольно близко, но не преобразовать в строки:

def main(): 
    print("Hello", end=" ") 
    print("this program will convert any 5 different celsius temperatures to fahrenheit.") 
    temps = eval(input("Please enter 5 different celsius temperatures seperated by commas: ")) 
    print(*temps) 
    for c in temps: 
     print(c) 
     fahrenheit = 9/5 * c + 32 
     print("The temperature is", fahrenheit, "degrees Fahrenheit.") 
    input("The program has now finished press enter when done: ") 

main() 

Не рекомендуется использовать eval как пользователь может выполнить произвольный код на языке Python. Лучше преобразовать число в явном виде:

prompt = "Please enter 5 different celsius temperatures seperated by commas: " 
temps = [int(x) for x in input(prompt).split(',')] 

В этом:

c = ("c" + str(i + 1)) 

создает строки 'c1', 'c2' и так далее. Они отличаются от имен c1 и c2, которые вы назначаете в строке input. Легче вводить все значения, которые пользователь вводит в temp. Неважно, если это один, два, десять или сто. Python позволяет петли temps непосредственно:

for c in temps: 

Здесь c стать каждое число в свою очередь, что магазин в temps.

+0

Благодарим вас за помощь. Я до сих пор чрезвычайно новичок в программировании и не знаю, что еще можно и не может сделать. – ShadowxEnd2

+3

Добро пожаловать в SO. Ваша попытка была уже неплохой. Мы все здесь, чтобы учиться. :) –

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