[英]How can I repeat the sentence on the basis of integer input?
谢尔顿·库珀曾经敲过佩妮的门。 众所周知,他会说“敲! 敲! 敲! 一分钱! 敲! 敲! 敲! 一分钱! ……”。 他继续敲门,直到佩妮开门。 每个单词需要一秒钟。 如果 Penny 在 N(input) sec 后开门,则编写一个 python 程序打印出当时生成的整个句子。 注意:您的程序中将只有一个输入 N。 对于这个问题,我的代码是:
str = "knock!knock!knock!penny"
#split string
splits = str.split()
#for loop to iterate over words array
for split in splits:
print(split)
我可以从这句话中访问每个单词,也可以只写半句。 但我不能让它遍历整个句子。 我的输出应该是:输入:6 输出:knock!knock!knock!penny!knock!knock!
如果你使用 sleep 和一些像这样的循环,它很容易实现,
import time
input_string = "knock!knock!knock!penny"
splitted = input_string.split('!')
def show_knock():
knocking = int(input("Enter Time in second : "))
count = 0
otp_list = []
for i in range(knocking):
tmp = f"{splitted[count]}!"
otp_list.append(tmp)
if count == 3:
count =0
else:
count+=1
time.sleep(1)
print(''.join(otp_list)) # '!'.join(otp_list) can be used here instead of f String
输出是knock!knock!knock!penny!knock!knock!
对于输入 6。
你可以试试这个。
import time
str2 = "knock!knock!knock!penny"
#split string
splits = str2.split('!')
#for loop to iterate over words array
j=int(input('Enter number: '))
newl=[]
x=0
for split in range(j):
if x==3:
newl.append(splits[x])
x=0
else:
newl.append(splits[x])
x+=1
time.sleep(1)
print('!'.join(newl))
你可以像这样尝试itertools.cycle
-
import itertools
str = "knock!knock!knock!penny"
splits = str.split('!')
n = 6
gen = itertools.cycle(splits)
print("!".join(next(gen) for _ in range(n)))
在您的代码中,您试图split()
它而不提供分隔符(在您的情况下!
)。
拆分后,您可以将列表提供给itertools.cycle
。 这将在列表中逐个迭代,在迭代完所有元素后,它将返回到第一个元素并无休止地执行此操作。
join()
的 for 循环只会在输出中生成那么多的单词,并且每两个单词都会被!
之间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.