Python如何在同一行获取两个用户输入分别赋值给对应变量
实现同一行输入两个参数的修改方案
问题原因
你当前的代码连续调用了2次input()函数,每次input()执行时都会等待用户按下回车确认输入后才会继续执行后续代码,两次回车就会产生换行,所以需要分两次输入,无法满足同一行输入的需求。
修改方案
仅调用1次input()获取完整的一行输入内容,再按照约定的格式拆分出cardName和cardNum两个变量即可。
方案1:适配你给出的期望输入格式
如果你需要完全匹配你期望的Card name : Spark Jump : Card number : 123输入效果,可以使用如下代码:
def Card(): # 一次获取整行输入 input_content = input('Card name : ') # 按照固定格式拆分两个参数 card_name_part, card_num_part = input_content.split(' : Card number : ') cardName = card_name_part.strip() cardNum = card_num_part.strip() # 后续逻辑保持不变 card = f'{cardName} : {cardNum}/{cardsInSet} ' library.append(card)
使用时直接在提示后输入Spark Jump : Card number : 123即可实现你要的效果。
方案2:简化输入格式(更易用)
如果可以接受更简单的输入规则(用户只需用英文冒号分隔卡片名和卡号,比如Spark Jump:123),可以使用如下更鲁棒的代码,还增加了格式校验逻辑避免输入错误导致程序报错:
def Card(): # 循环输入直到格式正确 while True: input_content = input('请输入卡片名和卡号,用英文冒号分隔(示例:Spark Jump:123):') try: # 从右往左拆分一次,避免卡片名里包含冒号导致拆分错误 cardName, cardNum = input_content.rsplit(':', 1) cardName = cardName.strip() cardNum = cardNum.strip() # 可选:校验卡号是否为数字 if not cardNum.isdigit(): print('输入错误:卡号必须为数字,请重新输入') continue # 格式校验通过,跳出循环 break except ValueError: print('输入格式错误,请按照示例格式重新输入') # 后续逻辑保持不变 card = f'{cardName} : {cardNum}/{cardsInSet} ' library.append(card)
内容的提问来源于stack exchange,提问作者Jacob Hanney
相关产品推荐
相关产品推荐

