Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何编写自己的函数,它将字符串和数字作为参数并打印;字符串*number";_Python - Fatal编程技术网

Python 我如何编写自己的函数,它将字符串和数字作为参数并打印;字符串*number";

Python 我如何编写自己的函数,它将字符串和数字作为参数并打印;字符串*number";,python,Python,我的家庭作业问题是: Python允许您通过将字符串乘以整数来重复该字符串,例如,“Hi”*3将给出“hihi”。假设此功能不存在,而是编写一个名为repeat的函数,该函数接受字符串和整数作为参数。函数应该返回一个原始字符串的字符串,该字符串重复指定的次数,例如repeat('Hi',3)应该返回'hihi' 我的回答如下: def repeat(string,number): fstring = "" for var in range(1,number+1

我的家庭作业问题是:

Python允许您通过将字符串乘以整数来重复该字符串,例如,“Hi”*3将给出“hihi”。假设此功能不存在,而是编写一个名为repeat的函数,该函数接受字符串和整数作为参数。函数应该返回一个原始字符串的字符串,该字符串重复指定的次数,例如repeat('Hi',3)应该返回'hihi'

我的回答如下:

def repeat(string,number):
    fstring = ""
    for var in range(1,number+1):
         fstring+=fstring+string
    print(fstring)
repeat("Hi",3)
但这并不是我所期望的:
hihihihi
. 我看不出错误,帮帮我

请记住,此函数是“值返回函数”,如果要打印,请使用:

print(repeat("Hi",3))

以下是每次将上一个
fstring
加倍:

fstring+=fstring+string
由于它使用
+=
运算符,因此它相当于:

fstring = fstring + fstring + string
只需将其更改为:

fstring += string
要修复它。

从您的代码:

         fstring+=fstring+string
这将获取任何已存在的
fstring
,加上
string
,并将其添加到
fstring

因此,
fstring
'
变为
'+'+'Hi'
,即
'Hi'
。然后到
'Hi'+'Hi'+'Hi'
,最后到
'hihi'+'HiHiHi'+'Hi'

另外,对于范围(1,数字+1)内的var,您可以使用
,但是对于范围(0,数字)内的var,使用
,可读性更高,速度更快,因为您实际上不需要
number
的值从
1
number
,您只需要它运行
number

您也不需要
var
,在这种情况下,您可以使用
\ucode>,它告诉Python忽略实际的循环变量名

您可能不希望在最后打印,而是希望函数返回结果,以便可以在某个地方使用它(例如,用于打印)

最后,我建议不要调用变量
string
,因为这可能会与内置的
str
混淆。类似于
s
的名称是临时字符串的常用名称

所以,你最终会得到:

def repeat(s, number):
    result = ''
    for _ in range(0, number):
         result += s
    return result

print(repeat("Hi", 3))

赋值运算符
+=
正在添加字符串和新字符串,因此您需要使用以下任一选项:

fstring=fstring+string


通过删除for循环中的+1,我可以让它工作。代码如下所示

def repeat(string,number):
fstring = ""
for var in range(1,number):
     fstring+=fstring+string
print(fstring)
repeat("Hi",3)

我认为最好的解释方法是手动运行迭代。 最初,
fstring
为空,因此可以将
fstring
string
添加到
fstring
变量中。 结果是:“+”嗨“=”嗨“,一切都好

第二次迭代: fstring=“嗨” string=“嗨” 您可能认为结果是“HiHi”,但您正在累积到
fstring
变量! 所以它是:

原始
fstring
+
fstring
+
string
=
HiHiHi

第三次迭代: 原始字符串已经是
HiHiHi
,我们添加了另一个
HiHiHi
,并添加了原始字符串。所以我们有七个“你好”

该函数将不断向自身添加
fstring
,因此它将变得非常大、非常快

解决方案是只将原始字符串附加到for循环中的
fstring

像这样:

    fstring = ""
    for var in range(1,number+1):
         fstring+=string
    print(fstring)
repeat("Hi",3)

这样,您就只添加了原始字符串。

我投了否决票,因为我觉得您的答案与之前提供的其他答案没有任何补充,有些是您提供的答案。是的,我承认您的答案和其他最重要的答案是最快和最好的,值得投票,而我的答案不是,但我还是迟到了一两分钟,因此,以我的拙见,你可能会删除否决票(如果你认为,也可以不删除,我不会介意),我不是在与我自己的答案进行比较(关于其他方面的细节,可以认为过于宽泛),而是@TomKarzes清晰、简短、切中要害的答案,它提供了完全相同的解决方案,但已在3分钟前发布。您答案中的代码与问题中的代码相同。@HiterDean哦,糟糕,我一定不是偶然从我的编辑器中复制了代码。此代码仅在数字=3时有效,但如果我选择数字=1或数字=4,则代码将不起作用。().
def repeat(string,number):
fstring = ""
for var in range(1,number):
     fstring+=fstring+string
print(fstring)
repeat("Hi",3)
    fstring = ""
    for var in range(1,number+1):
         fstring+=string
    print(fstring)
repeat("Hi",3)