为什么for循环会垂直产生输出?

时间:2019-02-16 02:54:08

标签: python function for-loop

我是python的新手,编写了简单的for循环

我正在编写一个程序,以从用户输入的电话号码中删除破折号。

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

但是,我收到的输出是:

9

0

0

8
  

我想要的输出是不带破折号的数字是900888943。

6 个答案:

答案 0 :(得分:1)

6:58 PM 循环遍历字符串中的每个字符。所以您实际上是在做:

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 会更简单。

答案 1 :(得分:1)

默认情况下,打印会以新行结束每个呼叫。同样,您的代码将用空的空格代替破折号,听起来好像不是您想要的。

您可以做的只是写以下内容:

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

答案 2 :(得分:0)

您只需要使用str.replace

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

如果您想同时使用forstrip,则列表理解是一种不错的选择:

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

答案 3 :(得分:0)

您正在做的是在循环中每次调用打印,从而打印了新行。您可以尝试以下操作: 您可以用任何一种方式来做 解决方法一:将打印内容恢复到同一行

resolve

解决方案二:有一个变量

reject

答案 4 :(得分:0)

phone = '900-900-9000'

print(phone.replace('-','') //9009009000

答案 5 :(得分:0)

Python 3提供了最简单的解决方案,您要做的就是为print函数提供一个额外的参数。

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

现在输出将是:

900888943

如果在其他情况下,每个字符之间需要空格,则只需将打印功能中的end参数从end=""替换为end=" "

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

现在输出将是:

S o m e D a t a