Python 3.6.4中输出字符串内存地址而非内容的问题排查
问题分析与解决
嗨,我帮你找出问题所在啦!这是编程新手很容易踩的小坑~
错误根源
你代码里的这一行出了问题:
a=a.upper
这里的upper是字符串类型的方法对象,你直接把这个方法本身赋值给了变量a,而不是调用它来生成大写后的字符串。所以当你打印a时,输出的自然是这个方法对象的描述信息(包括内存地址),而非你想要的大写字母。
修正后的代码
只需要给upper加上括号,变成调用方法的形式就可以了:
while True: a = input('Type letter to be capitalised ') digit = ['1', '2', '3', '4', '5', '6','7','8','9', '0'] if a not in digit: a = a.upper() # 加上括号,调用方法获取大写结果 print("The upper case of your character is {}".format(a)) else: break
额外小优化
其实判断输入是否为数字,有更简洁的写法,不用手动定义数字列表:
while True: a = input('Type letter to be capitalised ') if not a.isdigit(): a = a.upper() print("The upper case of your character is {}".format(a)) else: break
内容的提问来源于stack exchange,提问作者Ginabot
相关产品推荐
相关产品推荐

