Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—玩转Python语法(一):面向过程—Python程序设计训练场—进阶之道(6)(二十九)

简介: 玩转Python语法(一):面向过程

6.3 进阶之道

6.3.1 菱形

题目描述:

输入一个奇数 n,输出一个由 * 构成的 n 阶实心菱形。

输入格式:

一个奇数 n。

输出格式:

输出一个由 * 构成的 n 阶实心菱形。

具体格式参照输出样例。

输入样例:

5

输出样例:

  *  
 *** 
*****
 *** 
  *  

在线评测环境:AcWing 727. 菱形

代码:

n = int(input())
for i in range(n):
    s = ''
    for j in range(n):
        t = n // 2
        if abs(i - t) + abs(j - t)>t:
            s += str(' ')
        else:
            s += str('*')
    print(s)

6.3.2 字符串移位包含问题

题目描述:

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。

给定两个字符串 s1 和 s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。

例如 CDAA 是由 AABCD 两次移位后产生的新串 BCDAA 的子串,而 ABCD 与 ACBD 则不能通过多次移位来得到其中一个字符串是新串的子串。

输入格式:

共一行,包含两个字符串,中间由单个空格隔开。

字符串只包含字母和数字,长度不超过 30。

输出格式:

如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出 true,否则输出 false。

输入样例:

AABCD CDAA

输出样例:

true

在线评测环境:AcWing 776. 字符串移位包含问题

代码:

s1, s2 = input().strip().split(" ")
if len(s1) < len(s2):
    s1, s2 = s2, s1
s1 = s1 * 2
if(s1.find(s2) != -1):
    print("true")
else:
    print("false")

6.3.3 字符串乘方

题目描述:

给定两个字符串 a 和 b,我们定义 a×b 为他们的连接。

例如,如果 a=abc 而 b=def, 则 a×b=abcdef。

如果我们将连接考虑成乘法,一个非负整数的乘方将用一种通常的方式定义:a0=''(空字符串),a(n+1)=a×(an)。

输入格式:

输入包含多组测试样例,每组测试样例占一行。

每组样例包含一个字符串 s,s 的长度不超过 100。

最后的测试样例后面将是一个点号作为一行。

输出格式:

对于每一个 s,你需要输出最大的 n,使得存在一个字符串 a,让 s=an。

输入样例:

abcd
aaaa
ababab
.

输出样例:

1
4
3

在线评测环境:AcWing 777. 字符串乘方

代码:

while True:
    s = input()
    if s == '.':
        break
    n = len(s)
    for i in range (n):
        if n % (i + 1) == 0:
            sub = s[:i + 1]
            c = n // (i+1)
            sp = ''
            for j in range (c):
                sp += sub
                j += 1
            if s == sp:
                print (c)
                break

6.3.4 字符串最大跨距

题目描述:

有三个字符串 S,S1,S2,其中,S 长度不超过 300,S1 和 S2 的长度不超过 10。

现在,我们想要检测 S1 和 S2 是否同时在 S 中出现,且 S1 位于 S2 的左边,并在 S 中互不交叉(即,S1 的右边界点在 S2 的左边界点的左侧)。

计算满足上述条件的最大跨距(即,最大间隔距离:最右边的 S2 的起始点与最左边的 S1的终止点之间的字符数目)。

如果没有满足条件的 S1 ,S2 存在,则输出 −1 。

例如,S= abcd123ab888efghij45ef67kl, S1= ab, S2= ef,其中,S1 在 S 中出现了 2 次,S2 也在 S 中出现了 2 次,最大跨距为:18。

输入格式:

输入共一行,包含三个字符串 S,S1,S2,字符串之间用逗号隔开。

数据保证三个字符串中不含空格和逗号。

输出格式:

输出一个整数,表示最大跨距。

如果没有满足条件的 S1 和 S2 存在,则输出 −1。

输入样例:

abcd123ab888efghij45ef67kl,ab,ef

输出样例:

18

在线评测环境:AcWing 778. 字符串最大跨距

代码:

s, s1, s2 = input().split(",")
a = s.find(s1)
b = s.rfind(s2)
if(a == -1 or b == -1 or a+len(s1) >= b):
    print("-1")
else:
    print(b - a - len(s1))

6.3.5 最长公共字符串后缀

题目描述:

给出若干个字符串,输出这些字符串的最长公共后缀。

输入格式:

由若干组输入组成。

每组输入的第一行是一个整数 N。

N为 0 时表示输入结束,否则后面会继续有 N 行输入,每行是一个字符串(字符串内不含空白符)。

每个字符串的长度不超过 200。

输出格式:

共一行,为 N 个字符串的最长公共后缀(可能为空)。

输入样例:

3
baba
aba
cba
2
aa
cc
2
aa
a
0

输出样例:

ba
a

在线评测环境:AcWing 779. 最长公共字符串后缀

代码:

while True:
    n = int(input())
    if n == 0:
        break
    s = [''] * 200
    s_len, mlen = n, 200
    ms = ''
    for i in range(n):
        s[i] = input()
        if mlen > len(s[i]):
            mlen = len(s[i])
            ms = s[i]
    found = False
    for j in range(mlen):
        is_success = True
        ms2 = ms[j:]
        for k in range(s_len):
            if s[k][len(s[k]) - mlen + j:] != ms2:
                is_success = False
        if is_success:
            found = True
            print(ms2)
            break
    if not found:
        print('')


目录
相关文章
|
3月前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
89 4
|
2月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
41 7
|
2月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
82 5
|
2月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
51 1
|
2月前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
2月前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
26 2
|
3月前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
3月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
167 0
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
3月前
|
存储 数据可视化 数据处理
【Python篇】快速理解Python语法:全面指南
【Python篇】快速理解Python语法:全面指南
67 1
|
4月前
|
Java Linux C++
30天拿下Python之基础语法
30天拿下Python之基础语法
38 4