先生。里克认为改变汽油支付时间表只会对他不利。于是迪普先生提出了一种划分付款时间的方法。对于每 2n,他们将通过交换模式 2(n−1) 中支付的顺序(补数)来改变模式。这是 Dip 提出的模式:
n | 图案 |
---|---|
0 | A |
1 | AR |
2 | ARRA |
3 | ARRARAAR |
可以看出,粗体文本与图案的非粗体部分相反。里克先生非常喜欢这个主意。帮助 Ric 先生创建一个程序来生成此模式。使用函数或过程来解决这个问题。线索:该序列是前一个序列的互补序列的添加,如示例所示。准备一个大小为先前序列 2 倍的字符数组。
Example 1
Enter character 1: A
Enter character 2: R
Enter the value of n: 2
The obtained pattern: ARRA
Example 2
Enter character 1: U
Enter character 2: W
Enter the value of n: 4
The obtained pattern: UWWUWUUWWUUWUWWU
我尝试过这个,但输出有点关闭
def pattern(char1, char2, n):
pattern = char1
for i in range(n):
pattern += char2 * (i + 1)
pattern += char1
return pattern
def main():
char1 = input("Enter character 1: ")
char2 = input("Enter character 2: ")
n = int(input("Enter the value of n: "))
result = pattern(char1, char2, n)
print("The obtained pattern:", result)
if __name__ == "__main__":
main()
我建议你把问题进一步分解。每个步骤都会将上一步的逆值附加到字符串中。所以第一步是获取字符串的逆。
import re
def invert(s, a, b):
return re.sub(rf"({a}|{b})", lambda m: b if m.group(0) == a else a, s)
从那里开始就很简单了。首先将
char1
添加到结果中。然后在每个循环中将结果的倒数与其自身相加。