Новичок — Почему я не могу перевести в минуты?

#python

#python

Вопрос:

 minutes = input("Enter number of minutes you want to convert to seconds: ")
print (minutes   " minutes is "   float(minutes) * 60   " seconds.")
    
 

Я получаю эту ошибку can only concatenate str (not "float") to str .
Но если я использую str (вместо float ), он просто выводит количество минут, введенных 10 раз
, например 10101010....

Комментарии:

1. float(minutes) * 60 это число, вам нужно превратить его в строку, str() чтобы отформатировать его таким образом.

Ответ №1:

float(minutes) * 60 не является строкой и поэтому не может быть объединен с остальной частью вашей строки

рассмотрите возможность преобразования float(минут) * 60 в строку

 minutes = input("Enter number of minutes you want to convert to seconds: ")
print (minutes   " minutes is "   str(float(minutes) * 60)   " seconds.")
 

Ответ №2:

Хотя было добавлено много ответов, но есть еще один способ, отличный от этих, и такой же простой, как и все остальные, может быть, даже проще. Просто разделите свое different data-types с помощью a , 🙂

 print (minutes , "minutes is" , float(minutes) * 60 , "seconds.")
 

Комментарии:

1. Обратите внимание, что пробелы не нужны, так print как они автоматически помещают пробелы между каждым элементом. Это позволит отформатировать его немного лучше: print(minutes , "minutes is" , float(minutes) * 60 , "seconds.")

2. Да, это правда, я действительно скопировал это из вопроса и просто заменил знаки. Хотя это не будет иметь значения, поскольку это всего лишь оператор печати 🙂

Ответ №3:

Причина, по которой это не работает, заключается в том, что float(minutes) * 60 возвращает значение с плавающей запятой, которое нельзя объединить со строкой. Однако str(minutes) * 60 СТРОКА минут будет умножена на 60, что также не то, что вы хотите.

Решение состоит в том, чтобы преобразовать в float для выполнения вычисления, а затем преобразовать обратно в строку. Смотрите код ниже:

 minutes = input("Enter number of minutes you want to convert to seconds: ")
print (minutes   " minutes is "   str(float(minutes) * 60)   " seconds.")
 

Если вы введете 3 , этот код напечатает 3 minutes is 180.0 seconds.

Другие способы сделать то же самое включают:

Форматировать строки:

 print("%s is %0.1f seconds." % (minutes, float(minutes) * 60))
 

Если вы используете Python 3, f-strings:

 print(f"{minutes} is {float(minutes) * 60} seconds.")
 

Комментарии:

1. Ты да бомба <3 ты

2. @OMGGItsRob Нет проблем! Я также отредактировал несколько методов для этого, так что взгляните. Кроме того, если этот ответ вам помог, пожалуйста, подумайте о его принятии.

Ответ №4:

Вы не можете объединить строку с плавающей точкой Вместо этого используйте строку формата:

 print("%s minutes is %f seconds" % (minutes, float(minutes) * 60))
10 minutes is 60.000000 seconds
 

Комментарии:

1. Это меняет то, как должен работать код. 10 минут должны составлять 600 секунд, а не 10.

2. Да, по ошибке пропустил * 60