Jak mogę wydrukować zmienną i ciąg w tej samej linii w Pythonie?


176

Używam Pythona do obliczenia, ile dzieci urodziłoby się za 5 lat, gdyby dziecko rodziło się co 7 sekund. Problem tkwi w mojej ostatniej linii. Jak sprawić, by zmienna działała, gdy drukuję tekst po obu jej stronach?

Oto mój kod:

currentPop = 312032486
oneYear = 365
hours = 24
minutes = 60
seconds = 60

# seconds in a single day
secondsInDay = hours * minutes * seconds

# seconds in a year
secondsInYear = secondsInDay * oneYear

fiveYears = secondsInYear * 5

#Seconds in 5 years
print fiveYears

# fiveYears in seconds, divided by 7 seconds
births = fiveYears // 7

print "If there was a birth every 7 seconds, there would be: " births "births"

Uważaj w 2020 roku (zdrowy rozsądek, wiem: D). Drukowanie stało się funkcją w Pythonie3, musi być teraz używane z nawiasami: print(something)(Również Python2 jest przestarzały od tego roku.)
PythoNic

Odpowiedzi:


262

Służy ,do oddzielania ciągów i zmiennych podczas drukowania:

print "If there was a birth every 7 seconds, there would be: ",births,"births"

, w instrukcji print oddziela pozycje pojedynczą spacją:

>>> print "foo","bar","spam"
foo bar spam

lub lepiej użyj formatowania ciągów :

print "If there was a birth every 7 seconds, there would be: {} births".format(births)

Formatowanie ciągów jest znacznie bardziej wydajne i pozwala na wykonanie innych czynności, takich jak: dopełnienie, wypełnienie, wyrównanie, szerokość, dokładność ustawienia itp.

>>> print "{:d} {:03d} {:>20f}".format(1,2,1.1)
1 002             1.100000
  ^^^
  0's padded to 2

Próbny:

>>> births = 4
>>> print "If there was a birth every 7 seconds, there would be: ",births,"births"
If there was a birth every 7 seconds, there would be:  4 births

#formatting
>>> print "If there was a birth every 7 seconds, there would be: {} births".format(births)
If there was a birth every 7 seconds, there would be: 4 births

Żadna z tych odpowiedzi nie działa w Pyton 3. Prosimy o głosowanie za odpowiedzią Gagana Agrawala.
Axel Bregnsbo

58

Dwa więcej

Pierwszy

 >>>births = str(5)
 >>>print "there are " + births + " births."
 there are 5 births.

Dodając ciągi, łączą się.

Drugie

Również formatmetoda łańcuchów (Python 2.6 i nowsze) jest prawdopodobnie standardową metodą:

>>> births = str(5)
>>>
>>> print "there are {} births.".format(births)
there are 5 births.

Tej formatmetody można również używać z listami

>>> format_list = ['five','three']
>>> print "there are {} births and {} deaths".format(*format_list) #unpack the list
there are five births and three deaths

lub słowniki

>>> format_dictionary = {'births': 'five', 'deaths': 'three'}
>>> print "there are {births} births, and {deaths} deaths".format(**format_dictionary) #yup, unpack the dictionary
there are five births, and three deaths

52

Python to bardzo wszechstronny język. Możesz drukować zmienne różnymi metodami. Poniżej wymieniłem 4 metody. Możesz z nich korzystać według własnego uznania.

Przykład:

a=1
b='ball'

Metoda 1:

print('I have %d %s' %(a,b))

Metoda 2:

print('I have',a,b)

Metoda 3:

print('I have {} {}'.format(a,b))

Metoda 4:

print('I have ' + str(a) +' ' +b)

Metoda 5:

  print( f'I have {a} {b}')

Wynik byłby:

I have 1 ball

Decyzja jest związana ze stylem programowania: M2 to programowanie proceduralne, M3 to programowanie obiektowe. Słowo kluczowe dla M5 to sformatowany literał ciągu . W razie potrzeby należy używać operacji na łańcuchach, takich jak M1 i M4, co nie ma miejsca w tym przypadku (M1 dla słowników i krotek; M4 np. Dla ascii-art i innych sformatowanych danych wyjściowych)
PythoNic

29

Jeśli chcesz pracować z Pythonem 3, jest to bardzo proste:

print("If there was a birth every 7 second, there would be %d births." % (births))


14

Można też skorzystać z f-string lub .format () metody

Korzystanie z f-string

print(f'If there was a birth every 7 seconds, there would be: {births} births')

Korzystanie z .format ()

print("If there was a birth every 7 seconds, there would be: {births} births".format(births=births))

12

Możesz użyć łańcucha formatującego:

print "There are %d births" % (births,)

lub w tym prostym przypadku:

print "There are ", births, "births"

2
bądź ostrożny, jeśli używasz tego drugiego sposobu, ponieważ jest to krotka, a nie ciąg.
TehTris

5

Jeśli używasz Pythona 3.6 lub nowszego, f-string jest najlepszy i łatwy

print(f"{your_varaible_name}")

3

Najpierw utworzyłbyś zmienną: na przykład: D = 1. Następnie zrób to, ale zamień ciąg na cokolwiek chcesz:

D = 1
print("Here is a number!:",D)

3

W aktualnej wersji Pythona musisz użyć nawiasów, na przykład:

print ("If there was a birth every 7 seconds", X)

2

użyj formatowania ciągów

print("If there was a birth every 7 seconds, there would be: {} births".format(births))
 # Will replace "{}" with births

jeśli robisz projekt zabawki, użyj:

print('If there was a birth every 7 seconds, there would be:' births'births) 

lub

print('If there was a birth every 7 seconds, there would be: %d births' %(births))
# Will replace %d with births

1

Aby to zrobić, możesz użyć formatowania ciągów :

print "If there was a birth every 7 seconds, there would be: %d births" % births

lub możesz podać printwiele argumentów, które zostaną automatycznie oddzielone spacją:

print "If there was a birth every 7 seconds, there would be:", births, "births"

dziękuję za odpowiedź Amber. Czy możesz wyjaśnić, co robi litera „d” po symbolu%? dzięki
Bob Uni

2
%doznacza „formatowanie wartości jako liczby całkowitej”. Podobnie %swyglądałoby „formatowanie wartości jako ciąg znaków”, a %f„formatowanie wartości jako liczby zmiennoprzecinkowej”. Te i wiele innych jest udokumentowanych w części podręcznika Pythona, do której odnalazłem się w mojej odpowiedzi.
Bursztyn

1

Skopiowałem i wkleiłem twój skrypt do pliku .py. Uruchomiłem go tak, jak jest z Pythonem 2.7.10 i otrzymałem ten sam błąd składni. Wypróbowałem również skrypt w Pythonie 3.5 i otrzymałem następujący wynik:

File "print_strings_on_same_line.py", line 16
print fiveYears
              ^
SyntaxError: Missing parentheses in call to 'print'

Następnie zmodyfikowałem ostatnią linię, w której wypisuje liczbę urodzeń w następujący sposób:

currentPop = 312032486
oneYear = 365
hours = 24
minutes = 60
seconds = 60

# seconds in a single day
secondsInDay = hours * minutes * seconds

# seconds in a year
secondsInYear = secondsInDay * oneYear

fiveYears = secondsInYear * 5

#Seconds in 5 years
print fiveYears

# fiveYears in seconds, divided by 7 seconds
births = fiveYears // 7

print "If there was a birth every 7 seconds, there would be: " + str(births) + " births"

Wynik był (Python 2.7.10):

157680000
If there was a birth every 7 seconds, there would be: 22525714 births

Mam nadzieję, że to pomoże.


1

Po prostu użyj (przecinka) pomiędzy.

Zobacz ten kod, aby lepiej zrozumieć:

# Weight converter pounds to kg

weight_lbs = input("Enter your weight in pounds: ")

weight_kg = 0.45 * int(weight_lbs)

print("You are ", weight_kg, " kg")

0

Nieco inaczej: używając Pythona 3 i drukuj kilka zmiennych w tej samej linii:

print("~~Create new DB:",argv[5],"; with user:",argv[3],"; and Password:",argv[4]," ~~")

0

PYTHON 3

Lepiej użyć opcji formatu

user_name=input("Enter your name : )

points = 10

print ("Hello, {} your point is {} : ".format(user_name,points)

lub zadeklaruj dane wejściowe jako łańcuch i użyj

user_name=str(input("Enter your name : ))

points = 10

print("Hello, "+user_name+" your point is " +str(points))

1
Ciąg "Enter your name :nie
przechodzi w

print ("Hello, {} your point is {} : ".format(user_name,points) brak nawiasu zamykającego.
Hillsie

0

Jeśli użyjesz przecinka między ciągami a zmienną, na przykład:

print "If there was a birth every 7 seconds, there would be: ", births, "births"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.