繁体   English   中英

如何在整数输入的基础上重复句子?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM