Почему цикл for производит вывод вертикально? - PullRequest
0 голосов
/ 16 февраля 2019

Я новичок в Python и пишу простые для циклов

Я пишу программу для удаления тире из телефонного номера, введенного пользователем.

phone =str(input("Enter a phone number")) #900-888-943
for i in phone:
    print(i.strip("-"))

Однако выходнойЯ получаю:

9

0

0

8

Вывод, который я желаю получить: Число без тире - 900888943.

Ответы [ 6 ]

0 голосов
/ 16 февраля 2019

Python 3 предоставляет самое простое решение, все, что вам нужно сделать, это предоставить один дополнительный аргумент для функции печати. ​​

phone =str(input("Enter a phone number")) #900-888-943
for i in phone:
    print(i.replace('-',''),end="")

Теперь вывод будет:

900888943

И если для какого-то другого случая вам нужны пробелы между каждым символом, все, что вам нужно сделать, это заменить конечный аргумент в функции печати с end="" на end=" "

str="SomeData"
    for i in str:
        print(i,end=" ")

И теперь вывод будетбыть:

S o m e D a t a
0 голосов
/ 16 февраля 2019

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

Вместо этого вы можете просто написать следующее:

phone = str(input("Enter a phone number")).replace("-","")

0 голосов
/ 16 февраля 2019
phone = '900-900-9000'

print(phone.replace('-','') //9009009000
0 голосов
/ 16 февраля 2019

То, что вы делаете, вызывает вызов print каждый раз в цикле и, таким образом, печатает новую строку.Вы можете попробовать что-то вроде ниже: Вы можете сделать это любым способом. Решение одно: это вернет отпечаток к той же строке

phone =str(input("Enter a phone number")) #900-888-943
for i in phone:
  print(i.strip("-"),end="")

Решение второе: есть переменная

phone =str(input("Enter a phone number")) #900-888-943
num = ""
for i in phone:
   num +=i

 print(num)
0 голосов
/ 16 февраля 2019

Цикл for повторяется для каждого символа в строке.Таким образом, вы по существу делаете:

print("9".strip("-"))
print("0".strip("-"))
print("0".strip("-"))
print("-".strip("-"))
print("8".strip("-"))
print("8".strip("-"))
print("8".strip("-"))
print("-".strip("-"))
print("9".strip("-"))
print("4".strip("-"))
print("3".strip("-"))

В случаях, когда строка не "-", strip("-") ничего не меняет, поэтому она просто печатает эту строку;когда он равен "-", он становится пустой строкой и печатает ее.

По умолчанию print() добавляет символ новой строки после печати аргумента.Вы можете использовать необязательный аргумент end="", чтобы изменить это.

phone =str(input("Enter a phone number")) #900-888-943
for i in phone:
    print(i.strip("-"), end="")
print("") # Add a newline at the end

Но было бы проще просто напечатать phone.replace('-', ''), как в другом ответе.

0 голосов
/ 16 февраля 2019

Вам просто нужно использовать str.replace:

phone = str(input("Enter a phone number")) #900-888-943
print(phone.replace("-", ""))
# 900888943

Если вы хотите использовать for и strip, понимание списка - это хороший способ пойти:

phone = str(input("Enter a phone number")) #900-888-943
''.join([s.strip("-") for s in phone])
...