我是python的新手,并且编写简单的for循环
我正在编写一个程序来删除用户输入的电话号码中的破折号。
phone =str(input("Enter a phone number")) #900-888-943
for i in phone:
print(i.strip("-"))
但是,我收到的输出是:
9
0
0
8
我想要的输出是没有短划线的数字是900888943。
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('-', '')
会更简单。
默认情况下,print会以新行结束每次调用。此外,您的代码将用空格替换短划线,这听起来并不像您想要的那样。
您可以做的只是写下面的内容:
phone = str(input("Enter a phone number")).replace("-","")
你只需要使用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])
你正在做的是每次在循环中调用打印,从而打印一个新行。你可以试试下面的东西:你可以用任何一种方式做到这一点解决方案一:这会将打印带回同一行
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)
phone = '900-900-9000'
print(phone.replace('-','') //9009009000
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