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

问题描述 投票:0回答:6

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

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

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

但是,我收到的输出是:

9

0

0

8

我想要的输出是没有短划线的数字是900888943。

python function for-loop
6个回答
1
投票

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('-', '')会更简单。


1
投票

默认情况下,print会以新行结束每次调用。此外,您的代码将用空格替换短划线,这听起来并不像您想要的那样。

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

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


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])

0
投票

你正在做的是每次在循环中调用打印,从而打印一个新行。你可以试试下面的东西:你可以用任何一种方式做到这一点解决方案一:这会将打印带回同一行

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
投票
phone = '900-900-9000'

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

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=" "

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

现在输出将是:

S o m e D a t a
© www.soinside.com 2019 - 2024. All rights reserved.