V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
337136897
V2EX  ›  Python

Python 判断两个字符串内容相同的字符串,却返回了 flase

  •  
  •   337136897 · 2018-11-03 19:49:25 +08:00 · 3252 次点击
    这是一个创建于 2219 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发送了一个很不可思议的事情,两个相同的字符串,缺返回 flase。先上图 1

    整块代码

    #coding=gbk
    time = []
    arrayA = []
    inputfrist =[]
    arrayB = []
    
    returnfirst = []
    inputsecond = []
    resultone = []
    resulttwo = []
    resultwhree = []
    result = []
    
    a = 0
    
    def returnfirstMethod(word):
        if word == '有':
            return '沒'
        else:
            return '有'
    def resultoneMethod(inputfrist,arrayA,inputsecond,returnfirst):
        if inputfrist =='' or inputfrist ==0:
            return ''
        else:
            if arrayA == inputsecond:
                return inputfrist
            else:
                return returnfirst
    
    def resulttwoMethod(inputsecond):
        if inputsecond == 'A':
            return 'B'
        else:
            return 'A'
    
    def resultthreeMethod(rethodone):
        if rethodone == '':
            return ''
        else:
            if rethodone =='有':
                return '沒'
            else:
                return '有'
    
    def resultMethod(inpultfirst,preresultone,resultone):
        if inputfrist == '' or inputfrist == 0:
            return ''
        else:
            if preresultone==resultone:
                return '平'
            else:
                return '跳'
    
    def start(a):
        print("正在进行第%d 次试验" %a)
        arrayA.append('A')
        print(arrayA[a])
        time.append(a)
        print(time[a])
        print("请输入有或没:")
        inputfrist.append(input())
        print(inputfrist[a])
        arrayB.append('B')
        print(arrayB[a])
        returnfirst.append(returnfirstMethod(inputfrist[a]))
        print(returnfirst[a])
        print('请输入 A 和 B:')
        inputsecond.append(input())
        print(inputsecond[a])
        resultone.append(resultoneMethod(inputfrist[a], arrayA[a], inputsecond[a], returnfirst[a]))
        print(resultone[a])
        resulttwo.append(resulttwoMethod(inputsecond[a]))
        print(resulttwo[a])
        resultwhree.append(resultthreeMethod(resultone[a]))
        print(resultwhree[a])
        if a > 0:
            result.append(resultMethod(inputfrist[a], resultone[a],resultone[a-1]))
            print('第%d 次的结果是:%s' % ((a), result[a]))
        else:
            result.append('')
        a = a + 1
        print('输入任意字符继续')
        stop = input()
        if stop == 'y':
            return 0
        else:
            return start(a)
    
    
    start(a)
    
    

    第一轮输入:没 B 第二轮输入:没 A 输出 跳 正确 第三轮输入:有 B 输出 跳 错了 原因是 进入了这个函数,传入的是一个数组,分别是 a 和 a-1,内容都是 '没',但是判断下来怎么返回 false?

    18 条回复    2018-11-08 13:12:21 +08:00
    337136897
        1
    337136897  
    OP
       2018-11-03 19:51:49 +08:00
    来个大佬帮帮忙呗
    ltux
        2
    ltux  
       2018-11-03 20:18:18 +08:00
    发生了不可思议的事情,通常情况下是你程序写错了。
    dreasky
        3
    dreasky  
       2018-11-03 20:26:50 +08:00   ❤️ 5
    程序逻辑一团乱就不看了 ,但是两个一样? 一个是繁体'沒',一个是简体'没',这么低级的错误 .encode()出来一看就知道了,
    ranleng
        4
    ranleng  
       2018-11-03 20:37:02 +08:00
    没 沒 这是两个字.
    blindpirate
        5
    blindpirate  
       2018-11-03 20:53:32 +08:00
    inputfrist flase 感人
    337136897
        6
    337136897  
    OP
       2018-11-03 20:59:31 +08:00
    @blindpirate 随便取的
    337136897
        7
    337136897  
    OP
       2018-11-03 21:00:04 +08:00
    @dreasky 我的天啊。搞了 2 个多小时,我的智商受到了冲击。什么破输入法,气死我了
    di94sh
        8
    di94sh  
       2018-11-03 21:19:41 +08:00   ❤️ 3
    @dreasky #3 感觉楼主是在 反面证明 这两天几个帖子里面讨论的中文编程..
    337136897
        9
    337136897  
    OP
       2018-11-03 21:22:10 +08:00
    @di94sh 没有没有 ,测试用例随便的。嘻嘻嘻嘻嘻嘻嘻嘻嘻嗝
    princelai
        10
    princelai  
       2018-11-03 21:29:14 +08:00 via Android
    为什么用 GBK 不用 UTF ?
    ctro15547
        11
    ctro15547  
       2018-11-03 21:35:44 +08:00
    字符处理 py2 的话都转成 utf-8 再试比较好
    337136897
        12
    337136897  
    OP
       2018-11-03 21:42:29 +08:00
    @princelai 因为我听百度说 utf 输入中文会报错,所以没有尝试就用了 gbk
    dbw9580
        13
    dbw9580  
       2018-11-03 21:47:04 +08:00 via Android
    百度害人
    0ZXYDDu796nVCFxq
        14
    0ZXYDDu796nVCFxq  
       2018-11-03 21:54:26 +08:00 via Android
    False 和 false
    0ZXYDDu796nVCFxq
        15
    0ZXYDDu796nVCFxq  
       2018-11-03 21:57:39 +08:00 via Android   ❤️ 1
    @di94sh #8
    以后还得分简体中文编程,繁体中文编程
    zxcvsh
        16
    zxcvsh  
       2018-11-04 08:11:54 +08:00 via iPhone
    @337136897 看来你真的只是听说,好多基础教程开头就是 :
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    337136897
        17
    337136897  
    OP
       2018-11-05 09:29:32 +08:00
    @zxcvsh 不好意思,我还真没学过
    locoz
        18
    locoz  
       2018-11-08 13:12:21 +08:00
    @gstqc #15 哈哈哈哈哈哈哈哈哈哈真实
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2503 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:30 · PVG 10:30 · LAX 18:30 · JFK 21:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.