Python 从字符串更改int和string
format_address函数将地址字符串的一部分分离为新字符串:house_number和street_name,并返回:“house number X on street named Y”。输入字符串的格式为:数字房屋编号,后跟街道名称,街道名称可能包含数字,但不能单独包含数字,长度可以是几个单词。例如,“主街123号”、“第一大道1001号”或“北中心大道55号”。填补空白以完成此功能Python 从字符串更改int和string,python,Python,format_address函数将地址字符串的一部分分离为新字符串:house_number和street_name,并返回:“house number X on street named Y”。输入字符串的格式为:数字房屋编号,后跟街道名称,街道名称可能包含数字,但不能单独包含数字,长度可以是几个单词。例如,“主街123号”、“第一大道1001号”或“北中心大道55号”。填补空白以完成此功能 def格式地址(地址字符串): #声明变量 门牌号=“” 街道名称=“” #将地址字符串分成几个部分
def格式地址(地址字符串):
#声明变量
门牌号=“”
街道名称=“”
#将地址字符串分成几个部分
x=地址\字符串拆分(“”)
#遍历地址部分
对于x中的y:
如果(y.isdigit()):
房屋编号=y
其他:
街道名称+=y
街道名称+=''
#确定地址部分是否为
#门牌号或街道名称的一部分
#还有什么需要做的吗
#在返回结果之前?
#返回格式化的字符串
返回“名为{}的街道上的门牌号{}”。格式(门牌号、街道名)
打印(格式为地址(“123大街”))
#应打印:“名为Main street的街道上的123号房屋”
但它的输出显示为:
house number 123 on street named
house number 1001 on street named
house number 55 on street named
在我看来,您的
return
语句发生在for
循环中,这意味着您仅在第一项之后退出循环!但是到那时你还没有确定街道的名称
只需将
return…
移回一个选项卡,它就可以正常工作。这是因为您的return没有处于良好的缩进状态。它在第一个循环中被调用,所以您的boucle只进行了一次迭代
def format_address(address_string):
# Declare variables
house_number=' '
street_name=" "
# Separate the address string into parts
x=address_string.split(" ")
# Traverse through the address parts
for y in x:
if(y.isdigit()):
house_number=y
else:
street_name+=y
street_name+=' '
# Determine if the address part is the
# house number or part of the street name
# Does anything else need to be done
# before returning the result?
# Return the formatted string
return "house number {} on street named {}".format(house_number,street_name)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"```
使用
str.split()
时,您可以选择要将字符串拆分为多少段(只要不超过最大值)。在您的情况下,字符串只应拆分一次,以将门牌号与街道名称分开。此外,您还可以使用格式化字符串:
def format_address(address_string):
num, st = address_string.split(' ',1)
return f"house number {num} on street named {st}"
print(format_address("123 Main Street"))
输出:
house number 123 on street named Main Street
或者你可以这么做
def format_address(address_string):
# Declare variables
space = address_string.find(" ")
house_number = address_string[:space]
street_name = address_string[space:]
return "house number {} on street named{}".format(house_number, street_name)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
这对我有用
def format_address(address_string):
# Declare variables
hn =""
ha =""
# Separate the address string into parts
address_string = address_string.split()
# Traverse through the address parts
for add in address_string:
if add.isnumeric():
hn += add
else:
ha += add + " "
# Determine if the address part is the
# house number or part of the street name
# Does anything else need to be done
# before returning the result?
# Return the formatted string
return "house number {} on street named {}".format(hn,ha)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
我不使用if语句对数值进行求解,我将列表拆分为两部分,并将每个部分添加到相应的变量中。
@TomServo我想用
{}
语法只会从左到右填充它嗨!请考虑投票和/或接受解决问题的答案,请参阅。非常感谢。好地方!这是一个很好的例子,说明了为什么让你的评论与他们评论的代码保持一致是一种好的做法;很难直观地跟踪缩进的垂直线,因为注释到处都是。回答得很好,不仅仅是直接修复明显的错误。嗨,Ghyxen。欢迎来到堆栈溢出。虽然本准则可以回答该问题,但提供关于本准则为什么和/或如何回答该问题的附加上下文可提高其长期价值。还有,这个问题有很多答案。你能解释一下我为什么要用这个答案而不是现有的答案吗。亲切的问候。最简单的解决办法
def format_address(address_string):
# Declare variables
addres = address_string.split()
count = 0
stret= ""
for x in addres:
if count == 0:
num = x
count+=1
elif count == 1:
stret += x
count+=1
else:
stret += " "
stret += x
count+=1
# Does anything else need to be done
# before returning the result?
# Return the formatted string
return "house number {} on street named {}".format(num, stret)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
def format_address(address_string):
# Declare variables
number = ''
street = ''
# Separate the address string into parts
address_string = address_string.split()
# Traverse through the address parts
for add in address_string:
# Determine if the address part is the
# house number or part of the street name
if add.isdigit():
number += add
# Does anything else need to be done
# before returning the result?
else :
street += " " + add
# Return the formatted string
return "house number {} on street named {}".format(number, street)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
def format_address(address_string):
# Declare variables
hn =""
ha =""
# Separate the address string into parts
address_string = address_string.split()
# Traverse through the address parts
for add in address_string:
if add.isnumeric():
hn += add
else:
ha += add + " "
# Determine if the address part is the
# house number or part of the street name
# Does anything else need to be done
# before returning the result?
# Return the formatted string
return "house number {} on street named {}".format(hn,ha)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
def format_address(address_string):
# Declare variables
house_number = 0
street_name = []
# Separate the address string into parts
address = address_string.split()
# Traverse through the address parts
for item in address:
if item.isnumeric():
house_number = item
else:
street_name.append(item)
# Determine if the address part is the
# house number or part of the street name
# Does anything else need to be done
# before returning the result?
# Return the formatted string
return "house number {} on street named {}".format(house_number, " ".join(street_name))
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
def format_address(address_string):
# Declare variables
house_number=[]
street_name=[]
addresses=[]
# Separate the address string into parts
addresses = address_string.split()
# Traverse through the address parts
for address in addresses:
# Determine if the address part is the house number or part of the street name
if address.isnumeric() == True:
house_number.append(address)
else:
street_name.append(address)
house=" ".join(house_number)
street=" ".join(street_name)
# Return the formatted string
return "house number {} on street named {}".format(house,street)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
def format_address(address_string):
words = address_string.split()
return "house number {} on street named {}".format(words[0],' '.join(words[1:]))
def format_address(address_string):
# Declare variables
house_number=''
street_name=''
# Separate the address string into parts
address = address_string.split()
# Traverse through the address parts
for add in address:
# Determine if the address part is the
# house number or part of the street name
if add.isnumeric():
house_number = int(add)
else:
street_name += add + " "
# Does anything else need to be done
# before returning the result?
# Return the formatted string
return "house number {} on street named {}".format(house_number,street_name.strip())
def format_address(address_string):
# Declare variables
addres_list = []
name = " "
# Separate the address string into parts
addres_list = address_string.split(" ")
# Traverse through the address parts
number = addres_list[0]
name = name.join(addres_list[1:])
# Return the formatted string
return "house number {} on street named {}".format(number,name)
def format_address(address_string):
address = address_string.split(" ",1)
house=address[0]
street=address[1]
return "house number {} on street named {}".format(house,street)
print(format_address("123 Main Street"))
# Should print: "house number 123 on street named Main Street"
print(format_address("1001 1st Ave"))
# Should print: "house number 1001 on street named 1st Ave"
print(format_address("55 North Center Drive"))
# Should print "house number 55 on street named North Center Drive"
def format_address(address_string):
house_number = ''
street_name = ''
parts = address_string.split(' ',1)
house_number += parts[0]
street_name += parts[1]
return "house number {} on street named {}".format(house_number,street_name)