鱼C论坛

 找回密码
 立即注册
查看: 1897|回复: 7

[已解决]你们是如何在封装函数里面调用另外一个封装函数的?

[复制链接]
发表于 2017-5-8 16:01:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
例如:
def a():
      b=input("Input:")
       check(b)#检验b的输入值是否合法
def check(b):
      XXXX
      XXXX
      ......
大概例子如上  在对b进行检验之后  为什么返回的时候就会报错了呢  
那么该如何判断错误之后  自己打印错误  不会返回的时候报错呢
最佳答案
2017-5-8 16:53:27
check函数按我上面说的那么改,增加返回值

NameAndLine()对返回值进行判断,如果有误就重新输入,直到输入正确为止
  1. def NameAndLine():   
  2.     list1=[]
  3.     file_name=input('请输入要打开的文件(例如:C:\\test.txt):')
  4.     LinesNum = ''
  5.     isLegal = false
  6.     while(isLegal == false):
  7.         LinesNum=input('请输入需要显示该文件的行数【格式如13:21或:21或21:】:')
  8.         isLegal = check(LinesNum)
  9.     print('\n')
  10.     (front,back)=LinesNum.split(':',1)#应用字符串的切片取出两个参数用于列表的分片使用
  11.     user_file=open(file_name,'r')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-8 16:21:37 | 显示全部楼层
没太理解你的问题,你看下面的是不是你想问的

check(b)这个自定义函数,是对输入的b参数,进行一些检查。
-> 那么检查完的结果你是如何展示的?
如果是我写的话,会给这个check()添加返回值,如果b合法那么返回true,如果不合法返回false

这样在a()函数中调用check()函数,改成这样
  1. isLegal = check(b)
  2. #下面在写一个判断
  3. if isLegal == true:
  4.     xxxx
  5. else:
  6.     xxxx
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-8 16:47:02 | 显示全部楼层
shuofxz 发表于 2017-5-8 16:21
没太理解你的问题,你看下面的是不是你想问的

check(b)这个自定义函数,是对输入的b参数,进行一些检查 ...

def check(LinesNum):    #用于检测输入内容,如果正确则跳过,否则重新输入
    str2='0123456789:'
    while 1:
        for i in LinesNum:
             if i not in str2:
                 print('输入含有非法字符!',end='')
                 print('输入内容只能在"0123456789:"里面选择')
               
                 break
        break

def NameAndLine():   
    list1=[]
    file_name=input('请输入要打开的文件(例如:C:\\test.txt):')
    LinesNum=input('请输入需要显示该文件的行数【格式如13:21或:21或21:】:')
    check(LinesNum)
    print('\n')
    (front,back)=LinesNum.split(':',1)#应用字符串的切片取出两个参数用于列表的分片使用
    user_file=open(file_name,'r')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-8 16:49:02 | 显示全部楼层
shuofxz 发表于 2017-5-8 16:21
没太理解你的问题,你看下面的是不是你想问的

check(b)这个自定义函数,是对输入的b参数,进行一些检查 ...

我也想过。我想做这样的构思  先判断  然后再判断中就把值重新赋值  然后返回重新赋值 在使用  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-8 16:53:27 | 显示全部楼层    本楼为最佳答案   
check函数按我上面说的那么改,增加返回值

NameAndLine()对返回值进行判断,如果有误就重新输入,直到输入正确为止
  1. def NameAndLine():   
  2.     list1=[]
  3.     file_name=input('请输入要打开的文件(例如:C:\\test.txt):')
  4.     LinesNum = ''
  5.     isLegal = false
  6.     while(isLegal == false):
  7.         LinesNum=input('请输入需要显示该文件的行数【格式如13:21或:21或21:】:')
  8.         isLegal = check(LinesNum)
  9.     print('\n')
  10.     (front,back)=LinesNum.split(':',1)#应用字符串的切片取出两个参数用于列表的分片使用
  11.     user_file=open(file_name,'r')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-8 16:57:43 | 显示全部楼层
清风揽月shine 发表于 2017-5-8 16:49
我也想过。我想做这样的构思  先判断  然后再判断中就把值重新赋值  然后返回重新赋值 在使用

我写代码时没看到你的这个想法,改动的话 就把我上面写的while循环搬到check()函数中就是了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-8 17:14:45 | 显示全部楼层
清风揽月shine 发表于 2017-5-8 16:47
def check(LinesNum):    #用于检测输入内容,如果正确则跳过,否则重新输入
    str2='0123456789:'
   ...

楼主上面的代码我试运行了一下,发现会报错的有两种情况:
1.输入的file_name路径有问题或不存在时会报错
2.输入LinesNum中不包含':'会报错
其他的问题没发现

评分

参与人数 1鱼币 +3 收起 理由
清风揽月shine + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-9 08:19:36 | 显示全部楼层
18813034116 发表于 2017-5-8 17:14
楼主上面的代码我试运行了一下,发现会报错的有两种情况:
1.输入的file_name路径有问题或不存在时会报 ...

我知道错在哪里  字符串切片的时候错的 让我想想 谢谢你啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 18:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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