找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2455|回复: 2

[求助] def函数,input函数,但检测号码冲突时,如何循环问题

2

主题

2

帖子

2

积分

贫民

积分
2
linqunbin 发表于 2018-12-6 17:58:09 | 显示全部楼层 |阅读模式
如下代码,添加学生ID时做检查,如果检查已存在的ID,提示ID已存在,然后直接提示重新输入一个ID,而不是返回主程序.但这个功能功能想了半天不知道怎么写,目前只能是检查到冲突ID,给个返回主页面或者中断程序的提示.

def add_student():
    students_dict = {}
    a_id = input("请输入您要添加的Id:")
    if students_lists:
        for student_list in students_lists:
            if student_list["Id"] == a_id:
                print("您输入的Id:%s已存在,请跟换一个Id.\n" %a_id)
                choice = input("1,返回主页面,按其它任意键,退出程序:")
                if choice == "1":#返回主程序
                    return
                else:#退出程序
                    exit()
    a_name = input("请输入您要添加学生的名字:")
    a_age = input("请输入您要添加学生的年龄:")
    a_** = input("请输入您要添加学生的性别:")
    a_subject = input("请输入您要添加学生的学科:")
    students_dict["Id"] = a_id
    students_dict["Name"] = a_name
    students_dict["Age"] = a_age
    students_dict["**"] = a_**
    students_dict["Subject"] = a_subject
    students_lists.append(students_dict)
    print("学员Id:%s,添加成功." %a_id)
    choice = input("1,返回主页面,按其它任意键,退出程序:")
    if choice == "1":  # 返回主程序
        return
    else:  # 退出程序
        exit()

回复

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-7 17:19:27 | 显示全部楼层
小弟我獻醜了
  1. def dataInput():
  2.     def message():
  3.         print('\n-------------------------------- 重新輸入 --------------------------------')
  4.     students = []
  5.     flag = True
  6.     while True:
  7.         print('程序主頁')
  8.         retyping = False
  9.         if flag == False:
  10.             break
  11.         idList = []
  12.         if len(students) > 0:
  13.             for i in students:
  14.                 idList.append(i['ID'])
  15.         ID, name, age, gender, subject = None, None, None, None, None
  16.         while True:
  17.             try:
  18.                 print('\n輸入 1 返回主頁,輸入 q 退出')
  19.                 var = input('請輸入您要添加的ID:')
  20.                 if var in idList:
  21.                     raise ValueError()
  22.                 if var.lower() == '1':
  23.                     retyping = True
  24.                     message()
  25.                     break
  26.                 elif var.lower() == 'q':
  27.                     break
  28.                 ID = var
  29.                 break
  30.             except ValueError:
  31.                 print('您輸入的ID已存在輸入錯誤,請換一個ID\n')
  32.                 continue
  33.         if retyping == True:
  34.             continue
  35.         while True:
  36.             try:
  37.                 print('\n輸入 1 返回主頁,輸入 q 退出')
  38.                 var = input('請輸入您要添加的名字:')
  39.                 if var.lower() == '1':
  40.                     retyping = True
  41.                     message()
  42.                     break
  43.                 elif var.lower() == 'q':
  44.                     break
  45.                 name = var
  46.                 break
  47.             except TypeError:
  48.                 print('您輸入輸入錯誤,請換一個\n')
  49.                 continue
  50.         if retyping == True:
  51.             continue
  52.         while True:
  53.             try:
  54.                 print('\n輸入 1 返回主頁,輸入 q 退出')
  55.                 var = input('請輸入您要添加的年齡:')
  56.                 if var.lower() == '1':
  57.                     retyping = True
  58.                     message()
  59.                     break
  60.                 elif var.lower() == 'q':
  61.                     break
  62.                 age = int(var)
  63.                 break
  64.             except TypeError:
  65.                 print('您輸入錯誤,請換一個\n')
  66.                 continue
  67.         if retyping == True:
  68.             continue
  69.         while True:
  70.             try:
  71.                 print('\n輸入 1 返回主頁,輸入 q 退出')
  72.                 var = input('請輸入您要添加的性別,輸入 m 為男,輸入 f 為女:')
  73.                 if var.lower() not in ['m', 'f', '1', 'q']:
  74.                     raise ValueError()
  75.                 if var.lower() == '1':
  76.                     retyping = True
  77.                     message()
  78.                     break
  79.                 elif var.lower() == 'q':
  80.                     break
  81.                 if var.lower() == 'm':
  82.                     gender = '男'
  83.                     break
  84.                 else:
  85.                     gender = '女'
  86.                     break
  87.             except ValueError:
  88.                 print('您輸入錯誤,請換一個\n')
  89.                 continue
  90.         if retyping == True:
  91.             continue
  92.         while True:
  93.             try:
  94.                 print('\n輸入 1 返回主頁,輸入 q 退出')
  95.                 var = input('請輸入您要添加的學科:')
  96.                 if var.lower() == '1':
  97.                     retyping = True
  98.                     message()
  99.                     break
  100.                 elif var.lower() == 'q':
  101.                     break
  102.                 subject = var
  103.                 break
  104.             except TypeError:
  105.                 print('您輸入錯誤,請換一個\n')
  106.                 continue
  107.         if retyping == True:
  108.             continue
  109.         temp = {'ID': ID, 'Name': name, 'Age': age, 'gender': gender, 'Subject': subject}
  110.         students.append(temp)
  111.         print('學生資料添加成功\n')
  112.         while True:
  113.             try:
  114.                 reInput = input('想再添加其他學生?\n請輸入 Y 為是;輸入 N 為否:')
  115.                 if reInput.lower() not in ['y', 'n']:
  116.                     raise ValueError
  117.                 if reInput.lower() == 'y':
  118.                     flag = True
  119.                     break
  120.                 else:
  121.                     flag = False
  122.                     print('\n輸入程序執行完畢')
  123.                     break
  124.             except ValueError:
  125.                 print('您輸入錯誤,請換一個\n')
  126.                 continue
  127.     return students

  128. def dataOutput(args) -> print:
  129.     for i in args:
  130.         print(i)

  131. def main():
  132.     dataOutput(dataInput())
  133.     print('\n退出程序')

  134. if __name__ == '__main__':
  135.     main()
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表