首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python raw_input()

Python raw_input()
EN

Stack Overflow用户
提问于 2013-07-15 20:02:55
回答 3查看 592关注 0票数 1

从文档中,raw_input()从输入中读取一行,将其转换为字符串(去掉尾随的换行符),并返回该字符串。

带着那张便条,

代码语言:javascript
复制
a = 'testing: '
sep = '-'
c = raw_input('give me some args: ')          <--- giving 'a b c d'

def wrap( a, sep, *c):
    print a + sep.join(c)

wrap(a, sep, c)

str = 'a b c d'
print sep.join(str)

他们都应该打印出相同的东西但是..。

print a + sep.join(c)提供测试:a b c d

print sep.join(str)给出了a- -b - c- -d

为什么sep.join()在包装函数中不起作用?

编辑从*c到c使输出相同,但这有点让我感到困惑,因为我认为*c解压缩了args,但是当我打印c时,它给出ms ('a b c d‘),与'a b c d’的字符串相比,从某种意义上说,它是将它们组合成一个元组实体,而元组实体是反包装的?

或者..。它不解压缩字符串,而只是列表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-15 20:13:43

在您的函数中,c是一个元素的元组,因为它是splat (*),因此从不使用分隔符。在主程序中,您将调用一个字符串的联接,该字符串被拆分为其字符。那么你得到的分隔符的位置和字符的个数一样多(减一个)。

票数 3
EN

Stack Overflow用户

发布于 2013-07-15 20:15:01

join需要一个数组,而不是字符串,所以如果您试图将参数作为单独的项使用,则需要使用c = c.spilt(' ')并去掉def wrap中的*。

令我惊讶的是,sep.join(str)将str视为一个字符数组,因此在字母和空格之间增加了-s。

票数 2
EN

Stack Overflow用户

发布于 2013-07-15 20:13:40

这是:

代码语言:javascript
复制
>>> wrap(a, sep, str)
testing: a b c d

有别于:

代码语言:javascript
复制
>>> wrap(a, sep, *str)
testing: a- -b- -c- -d

字符串--一个字符列表。您可以将函数签名从def wrap(a, sep, *c):更改为def wrap(a, sep, c):,应该可以。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17662852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档