在Python中重复字符串而不进行乘法

时间:2019-10-09 04:25:28

标签: python string

enter image description here

你好,所以我的任务显示在图片的上方。我不是要答案,我只是想知道如何开始。
我最初的想法是:
1.让用户输入str(“示例词”)
2.让用户输入int(“示例编号”)
3.使用for循环读取数字,然后将单词打印出来。

到目前为止,我的代码如下所示:

def repeat():
    word=str(input("Please input a single word: "))
    number=int(input("Please input a number: "))
    for i in range(number):
        number+=1
        print(word,end=" ",sep='')
repeat()

但是我遇到了两个问题:
1.打印出单词时,输出为“ hello hello hello”而不是“ hellohellohello”
2.我觉得我没有完全正确地回答问题。

不胜感激!

3 个答案:

答案 0 :(得分:1)

这部分代码:

print(word, end=' ', sep='') 

正在添加这些空格。您不需要那些。另外,我不确定为什么要增加'number'数据类型。无需这样做,因为您只使用了for循环会根据用户输入进行操作的次数。同样,这些都应该传递给具有两个参数的函数:一个接受和整数,另一个接受字符串。例如:

repeat(intA, strB)

此外,我的建议是串联。将您的字符串添加在一起,而不是多次显示。这也将允许您创建一个新变量,稍后将其返回给调用它的函数。

答案 1 :(得分:0)

您可以创建以下函数来重复字符串:

def repeat(text, occurrence):
    new_text = ''
    for i in range(occurrence):
        new_text += text
    return new_text

print(repeat('Hi', 4))  # sample usage

最后,您可以像这样实现代码:

In [6]: repeat(input("Please input a single word: "), int(input("Please input a number: ")))
Please input a single word: hello
Please input a number: 5
Out[6]: 'hellohellohellohellohello'

答案 2 :(得分:0)

更多pythonic是使用生成器表达式:

def f(s,n):
    return ''.join(s for _ in range(n))

或Python的标准库:

import itertools as it
def f(s, n):
    return ''.join(it.repeat(s, n))

print(f('Hi', 3))

两种产品

'HiHiHi'