当用户输入其他未提示的内容时,如何防止错误?

如何解决当用户输入其他未提示的内容时,如何防止错误?

我正在制作一个过滤器/像素操作程序。基本上我已经完成了这一切,唯一的错误是当用户输入其他未提示的内容时,如“x”而不是“a”等。我尝试了“try:”和“except ValueError:”语句但我猜那是错的。 这是重要的代码代码:

    # Variables for image selection *for assigning string color only*
print("What image would you like to utilize? City Image: 'A',Dog Image: 'B',or Statue of Liberty: 'C'")

# Image selection input
img_input = input('Choose Image: ').casefold()
  
# Assign image choice char
img_choices = ['a','b','c']

# If Statements for opening image of choice
if img_input == img_choices[0]:
  img = Image.open('subjectIMG.jpg')
elif img_input == img_choices[1]:
  img = Image.open('subjectIMG0.jpg')
elif img_input == img_choices[2]:
  img = Image.open('subjectIMG2.jpg')


# For visuals only
time.sleep(0.8),print('\nChoosing your image....\n')
time.sleep(0.8),print('Image choosen!\n'),time.sleep(0.8)

# Rescales image to preferred size
width,height = img.width,img.height
xwidth,yheight = width // 1000,height // 1000
if xwidth > yheight:
  scale = xwidth
else:
  scale = yheight
if scale != 0:
  img = img.resize( (width // scale,height // scale) )

# Filter One
def invert_distort(display_algorithm,image_filter_inverted):
  # Get pixel data (every pixel) and make new list
  pixels_get = img.getdata() 
  pixel_list = [] 

  # Go through every pixel in image and append every pixel to list
  for p in pixels_get: 
    pixel_list.append(p) 

  # Pixel location and row 
  pixel_location = 0
  pixel_row = 0

  # Begin while loop at index 0 in order to loop through every pixel
  while pixel_location < len(pixel_list): 
    p = pixel_list[pixel_location] 

    # Prints current row and pixel color values
    if display_algorithm == 'y':
      print(f'Current row: {pixel_row}: {p}')
      pixel_row += 1

    if display_algorithm == 'n': 
      pass

    # Pixel Manipulation
    # If user enters accordingly,Colors Red,Green,Blue set into variables
    xr,xg,xb = 0,0

    if image_filter_inverted in image_filter_inverted_choices[0]:
      xr,1,2

    elif image_filter_inverted in image_filter_inverted_choices[1]:
      xr,xb = 2,2,2
   
    # Red,Blue sorted into pixel list
    r,g,b = p[xr],p[xg],p[xb]

    # RGB values assigned to r,b
    absr,absg,absb = 255,255,255

    # Absolute value of pixels from red,green blue taken.
    # RBG values assigned,stored into variables below.
    update_r,update_g,update_b = abs(r-absr),abs(g-absg),abs(b-absb)

    # New values assigned at specific pixel location
    pixel_list[pixel_location] = (update_r,update_b)
    pixel_location = pixel_location + 1
    
  # New image created using same size and RGB format
  final_image = Image.new("RGB",img.size)
  final_image.putdata(pixel_list)
  
  # Filter from PIL applied to new image
  filter_applied = final_image.filter(ImageFilter.SHARPEN)
  return filter_applied
  
# Filter Two
def drawing_filter(display_algorithm,image_filter_drawing):

  # Get pixel data (every pixel) and make new list
  pixels_get = img.getdata() 
  pixel_list = [] 

  # Go through every pixel in image and append every pixel to list
  for p in pixels_get: 
    pixel_list.append(p) 

  # Pixel location and row 
  pixel_location = 0
  pixel_row = 0

  # Begin while loop at index 0 in order to loop through every pixel
  while pixel_location < len(pixel_list): 
    p = pixel_list[pixel_location] 

    # Prints current row and pixel color values
    if display_algorithm == 'y':
      print(f'Current row: {pixel_row}: {p}')
      pixel_row += 1

    if display_algorithm == 'n': 
      pass

    # Pixel Manipulation
    # Colors Red,2

    # Red,update_b)
    pixel_location = pixel_location + 1

  # New image created using same size and RGB format
  final_image = Image.new("RGB",img.size)
  final_image.putdata(pixel_list)

  # If statement applies,filter added to new image
  # Filter from PIL applied to new image
  if image_filter_drawing in image_filter_drawing_choices[0]:
    filter_applied = final_image.filter(ImageFilter.CONTOUR)
    return filter_applied

  elif image_filter_drawing in image_filter_drawing_choices[1]:
    filter_applied = final_image.filter(ImageFilter.EMBOSS)
    return filter_applied

# Filter Three
def constant_filter(display_algorithm): 

  # Get pixel data (every pixel) and make new list
  pixels_get = img.getdata() 
  pixel_list = [] 

  # Go through every pixel in image and append every pixel to list
  for p in pixels_get: 
    pixel_list.append(p) 

  # Pixel location and row 
  pixel_location = 0 
  pixel_row = 0 

  # Begin while loop at index 0 in order to loop through every pixel
  while pixel_location < len(pixel_list): 
    p = pixel_list[pixel_location] 

    # Prints current row and pixel color values
    if display_algorithm == 'y':
      print(f'Current row: {pixel_row}: {p}')
      pixel_row += 1
      
    if display_algorithm == 'n': 
      pass

    # Pixel Manipulation
    # Colors Red,p[xb]

    # RBG values assigned,update_b = r,b

    # New values assigned at specific pixel location
    pixel_list[pixel_location] = (update_r,img.size)
  final_image.putdata(pixel_list)  

  # First Enhance Applied
  applyOne = ImageEnhance.Contrast(final_image)
  # Second Enhance Applied
  applyTwo = applyOne.enhance(0.5)
  # Final form stored into new variable
  filter_applied = applyTwo
  return filter_applied
  
# Permit user to choose to see algorithm visuals
display_algorithm = input("Would you like to see the back-end (algorithm) process? Enter 'Y' or 'N': ").casefold()

# Takes user input on main filter decision
image_filter_main = input("\nChoose a filter: Inverted: 'A',Drawing: 'B',or Contrast: 'C': ").casefold()
# Main Filter choices
image_filter_main_choices = ['a','c']

# If statments based off user input 
# Functions called: invert_distort(),drawing_filter(),constant_filter()

# Function invert_distort() if statment
if image_filter_main in image_filter_main_choices[0]:
  # Choose type of filter based off invert filter
  image_filter_inverted = input("\nChoose: Negative: 'A' or Monochrome: 'B': ").casefold()
  image_filter_inverted_choices = ['a','b']
  # Begin code duration time
  initiate = datetime.now()
  # Call function
  invert_distort(display_algorithm,image_filter_inverted)
  # Store function in a new variable
  imageInvert = invert_distort(display_algorithm,image_filter_inverted)
  print("\nFinishing your image...") 
  # Save Image (create new image)
  imageInvert.save("InvertIMG.jpg")

# Function drawing_filter() if statement
if image_filter_main in image_filter_main_choices[1]:
  # Choose type of filter based off drawing filter
  image_filter_drawing = input("\nChoose: Sketch: 'A' or Engraving: 'B': ").casefold()
  image_filter_drawing_choices = ['a','b']
  # Begin code duration time
  initiate = datetime.now()
  # Call function
  drawing_filter(display_algorithm,image_filter_drawing)
  # Store function in a new variable
  imageDrawing = drawing_filter(display_algorithm,image_filter_drawing)
  print("\nFinishing your image...")
  # Save Image (create new image)
  imageDrawing.save("DrawingIMG.jpg")

# Function constant_filter() if statement
if image_filter_main in image_filter_main_choices[2]:
  # Begin code duration time
  initiate = datetime.now()
  # Call function
  constant_filter(display_algorithm)
  # Store function in a new variable
  imageFirm = constant_filter(display_algorithm)
  print("\nFinishing your image...")
  # Save Image (create new image)
  imageFirm.save("ConstantIMG.jpg")

# End code duration time
# Print total duration of code
terminate = datetime.now()
print('\nDuration to execute code: {}'.format(colored((terminate - initiate),'blue')))

对不起,这个片段太大了,它只是从顶部链接到底部代码的一个输入。如果有人可以帮助我,我将不胜感激。不知道要包含哪些具体部分,所以我包含了最重要的部分。

解决方法

您可以使用退出选项使其成为无限 while 循环。您可以采用多种方法。但这对您的代码改动最少。

EXIT_TOKEN = "Q"
img_choices = ['a','b','c']

# If Statements for opening image of choice
while (img_input:= input('Choose Image: ').casefold()):
  if img_input == img_choices[0]:
    img = Image.open('subjectIMG.jpg')
  elif img_input == img_choices[1]:
    img = Image.open('subjectIMG0.jpg')
  elif img_input == img_choices[2]:
    img = Image.open('subjectIMG2.jpg')
  elif img_input == EXIT_TOKEN:
    sys.exit()
  else:
    print(f"Unexpected input: {img_input}")
    continue

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res