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
vivasiva
V2EX  ›  Python

新人学习python,问个数据类型变换的问题。

  •  
  •   vivasiva · 2014-02-04 14:51:08 +08:00 · 3229 次点击
    这是一个创建于 3759 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不学计算机,没有编程经验,在看《与孩子一起学编程》,第五章习题有一题“编写一个程序询问一间长方形房间的尺寸,单位为米,然后计算覆盖整个房间需要多少地毯,并显示出来”

    题目条件没设全,猜测应该是假设地毯为1米1块。

    我写成:

    print "This is a program for room."
    print "How long is the room's width?",
    a = int(raw_input())
    print "How long is the room's height?",
    b = int(raw_input())
    M = a * b
    print "The whole room needs", M, "ditan."

    这个没问题。

    但看书里可以把提示语写进raw_input里,所以写了第二个:

    print "This is a program for ditan."
    a = raw_input("How long is the room's width?"),
    b = int(a)
    c = raw_input("How long is the room's height?"),
    d = int(c)
    m = b*d
    print "The whole room needs", m, "ditan."

    提示 int() argument must be a string or a number, not 'tuple'

    请问何解?b=int(a),这个a不是已经被赋值成一个字符串了么,怎么是tuple呢?
    3 条回复    1970-01-01 08:00:00 +08:00
    yelite
        1
    yelite  
       2014-02-04 15:13:02 +08:00 via iPhone   ❤️ 2
    因为在raw_input后面加了','
    这样就变成了一元的tuple了
    vivasiva
        2
    vivasiva  
    OP
       2014-02-04 15:49:28 +08:00
    谢谢,收到答案后重新翻了教程,发现是我把print后带逗号让用户同行输入和raw_input弄混了,raw_input不能这么使用。
    detailyang
        3
    detailyang  
       2014-02-05 20:20:52 +08:00
    毕竟Python是通过逗号来确定tuple, 1,即(1,)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:52 · PVG 20:52 · LAX 05:52 · JFK 08:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.