Нужна помощь в возвращении строки с несколькими переменными в Python - PullRequest
1 голос
/ 22 октября 2019

Мне нужно написать функцию, которая возвращает строку для проекта, который я делаю. В настоящее время у меня есть 5 переменных в этой функции. Я попытался выяснить, как создать строку внутри оператора return с включенными переменными, но когда я печатаю функцию, я всегда получаю кавычки вокруг строк и не могу поставить новую строку между различными строками.

Мне нужно, чтобы он напечатал общее количество миль на одной строке, чистых миль на следующей и т. Д. ... Всякий раз, когда я добавляю новую строку в строку, вместо этого просто выводится символ \ n.

Я просто не могу понять, как это сделать. У меня не может быть операторов print внутри функции, все это должно быть распечатано из возвращаемого значения. Логика работает отлично, но я не могу пройти мимо этого ради своей жизни.

def report_stats(total_cost,gallons_used):
    global total_distance
    global net_miles
    var1 = "Total Miles Traveled: ", total_distance
    var2 = "Net Miles: ", net_miles
    var3 = "Gallons used: ", gallons_used
    var4 = "Total Cost: ", total_cost
    if total_cost < 25:
        how_much = "Cha Chiiinng!"
    if 25 <= total_cost < 100:
        how_much = "Wallet getting nervous!"
    else:
        how_much = "Ouch!"
    return var1,var2,var3,var4,how_much
print(report_stats(total_cost,gallons_used))

Любые советы?

Спасибо!

Ответы [ 4 ]

0 голосов
/ 22 октября 2019

Использование списка понимания:

[print(x) for x in report_stats(total_cost,gallons_used)]
0 голосов
/ 22 октября 2019

Ваши переменные, вероятно, должны быть строками (теперь они кортежи). Измените это и используйте тройные кавычки Python, как показано ниже:

def report_stats(total_cost,gallons_used):
    global total_distance
    global net_miles
    var1 = "Total Miles Traveled: " + str(total_distance)
    var2 = "Net Miles: " + str(net_miles)
    var3 = "Gallons used: " + str(gallons_used)
    var4 = "Total Cost: " +  str(total_cost)
    if total_cost < 25:
        how_much = "Cha Chiiinng!"
    if 25 <= total_cost < 100:
        how_much = "Wallet getting nervous!"
    else:
        how_much = "Ouch!"
    return """{}
{}
{}
{}
{}""".format(var1, var2, var3, var4, how_much)
0 голосов
/ 22 октября 2019

Вы можете использовать концепцию, называемую распаковка в Python. Как то так:

def report_stats(total_cost,gallons_used):
    global total_distance
    global net_miles
    var1 = "Total Miles Traveled: ", total_distance
    var2 = "Net Miles: ", net_miles
    var3 = "Gallons used: ", gallons_used
    var4 = "Total Cost: ", total_cost
    if total_cost < 25:
        how_much = "Cha Chiiinng!"
    if 25 <= total_cost < 100:
        how_much = "Wallet getting nervous!"
    else:
        how_much = "Ouch!"
    return var1,var2,var3,var4,how_much
var1,var2,var3,var4,how_much = report_stats(total_cost,gallons_used)
print(var1 + '\n' + var2 + '\n' + var3 + '\n' + var4 + '\n' + how_much')
0 голосов
/ 22 октября 2019

здесь вы можете использовать интерполяцию строк. в Python 3.6+ вы можете сделать следующее

var1 = f"Total Miles Traveled: {total_distance}"

, поэтому в ответ вы можете сделать следующее.

def report_stats(total_cost,gallons_used):
var1 = f"Total Miles Traveled: {gallons_used}"
var2 = f"Total Miles Traveled: {gallons_used}"
var3 = f"Total Miles Traveled: {gallons_used}"
var4 = f"Total Miles Traveled: {gallons_used}"
if total_cost < 25:
    how_much = "Cha Chiiinng!"
if 25 <= total_cost < 100:
    how_much = "Wallet getting nervous!"
else:
    how_much = "Ouch!"
return f"{var1}\n{var2}\n{var3}\n{var4}\n{how_much}"
print(report_stats(10,2))

output:

Total Miles Traveled: 2
Total Miles Traveled: 2
Total Miles Traveled: 2
Total Miles Traveled: 2
Ouch!
...