input: Write a function to scrape photos and captions from a given website URL. The function should return a list of tuples where each tuple contains the photo URL and its corresponding caption (if any). If there is no caption, an empty string should be returned for that photo.
  
  def scrape_photos_and_captions(url):
      from bs4 import BeautifulSoup
      import requests
      
      # Get the HTML source code
      req = requests.get(url)
      html = req.text
      
      # Parse HTML source and extract photo and caption
      soup = BeautifulSoup(html, features='lxml')
      image_divs = soup.find_all('div', {'class': 'image-gallery__image'})
      
      results = []
      for image_div in image_divs:
          figure = image_div.find('figure')
          src = figure.find('img')['src']
          caption = figure.find('figcaption')
          if caption:
              results.append((src, caption.text))
          else:
              results.append((src, ''))
      
      return results
  
  assert scrape_photos_and_captions('https://example.com/webpage') == [
      ('https://example.com/image1.jpg', 'Caption 1'),
      ('https://example.com/image2.jpg', ''),
      ('https://example.com/image3.jpg', 'Caption 3')
  ]
output: def scrape_photos_and_captions(url):
      from bs4 import BeautifulSoup
      import requests
      
      # Get the HTML source code
      req = requests.get(url)
      html = req.text
      
      # Parse HTML source and extract photo and caption
      soup = BeautifulSoup(html, features='lxml')
      image_divs = soup.find_all('div', {'class': 'image-gallery__image'})
      
      results = []
      for image_div in image_divs:
          figure = image_div.find('figure')
          src = figure.find('img')['src']
          caption = figure.find('figcaption')
          if caption:
              results.append((src, caption.text))
          else:
              results.append((src, ''))
      
      return results