从字符串更改int和string

2024-09-29 21:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

format_address函数将地址字符串的一部分分离为新字符串:house_number和street_name,并返回:“house number X on street named Y”。输入字符串的格式为:数字房屋编号,后跟街道名称,街道名称可能包含数字,但不能单独包含数字,长度可以是几个单词。例如,“主街123号”、“第一大道1001号”或“北中心大道55号”。填补空白以完成此功能

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"

但它的输出显示为:

house number 123 on street named  
house number 1001 on street named  
house number 55 on street named  

Tags: the字符串name名称formatstreetnumberstring
3条回答
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"

在我看来,您的return语句发生在for循环中,这意味着您仅在第一项之后退出循环!但是到那时你还没有确定街道的名称

只需将return ...移回一个选项卡,它就可以正常工作了

使用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

相关问题 更多 >

    热门问题