zoukankan      html  css  js  c++  java
  • python3.x元组打印错误 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'

    原创by南山南北秋悲

    欢迎引用!请注明原地址:http://www.cnblogs.com/hwd9654/p/5676746.html  谢谢!

    TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'

    打印变量时遇到的问题,

    想着c语言中printf("%s", 变量名)

    python中 应该也是类似的语句

    果断百度,发现是通过语句后附加一个%(变量名)来解决的

    详细如下:

    print语句可以使用跟着%符号的项目元组的字符串。这些字符串具备定制的功能。定制让输出满足某种特定的格式。定制可以是%s表示字符串或%d表示整数。元组必须按照相同的顺序来对应这些定制。

    观察我们使用的第一个元组,我们首先使用%s,这对应变量name,它是元组中的第一个项目。而第二个定制是%d,它对应元组的第二个项目age

    Python在这里所做的是把元组中的每个项目转换成字符串并且用字符串的值替换定制的位置。因此%s被替换为变量name的值,依此类推。

    print的这个用法使得编写输出变得极其简单,它避免了许多字符串操作。它也避免了我们一直以来使用的逗号。

    在大多数时候,你可以只使用%s定制,而让Python来提你处理剩余的事情。这种方法对数同样奏效。然而,你可能希望使用正确的定制,从而可以避免多一层的检验程序是否正确。

    在第二个print语句中,我们使用了一个定制,后面跟着%符号后的单个项目——没有圆括号。这只在字符串中只有一个定制的时候有效。

    例子:

    age = 22
    name = 'Swaroop'

    print '%s is %d years old' % (name, age)
    print 'Why is %s playing with that python?' % name

    结果:

    Swaroop is 22 years old
    Why is Swaroop playing with that python?

    可是我自己编程的时候却遇到了上述问题:TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'

    语句如下:

    a = 'Peter'
    b = 'Linda'

    print("who is the murder? %s or %s?") % (a, b)

    后来才发现,python3.x与python2.x有一点区别,
    原来%(变量名,...)应该是加在print括号里的
    如:print("who is the murder? %s or %s" % (a, b))

    改完以后输出正常:

    
    
  • 相关阅读:
    困扰程序员的30种软件开发问题,你是否时曾相识?
    一位阿里架构师给每个程序员的小建议
    一位阿里架构师给每个程序员的小建议
    一位阿里架构师给每个程序员的小建议
    MongoDB常用语句
    MongoDB常用语句
    ACM2055_ctype.h_cctype
    Serverless 每周小报-20190610
    linux-深度学习环境配置-Centos
    2018 ACM 国际大学生程序设计竞赛上海大都会赛
  • 原文地址:https://www.cnblogs.com/hwd9654/p/5676746.html
Copyright © 2011-2022 走看看