• 1
    数据输入输出
    • 任务
  • 2
    条件语句
    • 任务
  • 3
    for循环
    • 任务
  • 4
    字符串
    • 任务
  • 5
    while循环
    • 任务
  • 6
    列表
    • 任务
  • 7
    二维数组
    • 任务
  • 8
    字典
    • 任务
  • 9
    集合
    • 任务
  • 10
    函数与递归
    • 任务
  • к

课程 4. Lines

难度:

任务«文件名»

💻 Python

你在一家大公司找到了一份工作。你的第一个任务——帮助自动化检查带有每日报告的文件。公司有一条严格的规定:所有报告文件的名称必须以前缀 report_ 开头,并以扩展名 .txt 结尾。文件名可以不同,例如:report_2025-05-06.txt 或 report_sales_summary.txt。

你需要编写一个程序来检查文件名列表是否符合此规则。程序不应打开或创建文件,仅处理作为字符串的文件名。

任务:
编写一个程序,要求:

  1. 首先向用户提供一个数字——待检查的文件数量。
  2. 然后在循环中依次请求每个文件的名称。
  3. 对于每个输入的文件名,程序必须检查它是否同时满足两个条件:
    • 以字符串 report_ 开头
    • 严格以 .txt 结尾
  4. 程序必须在检查文件后立即在屏幕上显示结果:如果文件名符合规则,则显示单词“correctly”,否则显示“incorrect”。

输入格式

首先,输入用于验证的文件数量(一个整数)。然后,在每一新行中,输入一个文件名(字符串)。

输出格式

对于每个输入的文件名,在新的一行中显示验证结果:"correct" 或 "incorrect"(行)。

示例

输入

4
report_2025.txt
my_report.txt
report_data.csv
report_final_version.txt

输出

正确
错误
错误
正确

提示

methods for working with strings in python

Python provides many built-in methods for working with strings. These are powerful tools that make it easy to manipulate text data. All methods are called with a dot after the variable in which the string is stored, according to the variable scheme.method().

It is important to remember that strings in Python are immutable. This means that none of the methods changes the original string. Instead, they return a new string with the changes applied.

Basic methods for working with strings

1. upper() and lower()

Convert all characters of the string to upper or lower case, respectively.

string = "Hello, World!"
print(string.upper()) # Output: HELLO, WORLD!
print(string.lower()) # Output: hello, world!
print(string) # Output: Hello, World! (the original line has not changed)

A useful tip: These methods are indispensable when you need to compare case-insensitive strings. For example, when checking user input.

user_input = "Yes"
if user_input.lower() =="yes":
print("The user agrees.")

2. strip(), lstrip() and rstrip()

Remove whitespace characters (spaces, tabs, line breaks) from the beginning and end of the line. lstrip() deletes only on the left, and rstrip() deletes only on the right.

string = "  Hello, World!  "
print(string.strip()) # Output: Hello, World!
print(string.lstrip()) # Output: Hello, World!  
print(string.rstrip()) # Output: Hello, World!

A useful tip: These are extremely important methods for "cleaning" data obtained from files or from users, who often accidentally leave unnecessary spaces. As an argument, you can pass a string of characters that need to be deleted.

dirty_string = "!!!Hello, World!?! "
print(dirty_string.strip(" !?")) # Output: Hello, World

3. split() and join()

split() splits a string into a list of substrings using the specified separator. join() collects a string from the list items by inserting a separator string between them.

string = "Hello, World!"
words =string.split(", ")
print(words) # Output: ['Hello', 'World!']

# Reverse operation
joined_string = " | ".join(words)
print(joined_string) # Output: Hello | World!

A useful tip: split() is a standard method for parsing (parsing) data presented as a string, for example, CSV files. join() is the most efficient ("pythonic") way to assemble one large string from many small ones. It works much faster than adding strings in a loop using +.

4. find() and replace()

find() searches for the first occurrence of a substring and returns its index (position). If the substring is not found, returns -1. replace() replaces all occurrences of one substring with another.

string = "Hello, World!"
index = string.find("World")
print(index) # Output: 7

new_string = string.replace("World", "Python")
print(new_string) # Output: Hello, Python!

A useful tip: There is an analog of the find() index() method.. It does the same thing, but if the substring is not found, it raises the error ValueError. Use find() if the absence of a substring is a normal situation, and index(), if it should interrupt the execution of the program. The replace() method can also accept a third argument - the number of substitutions to be made.

5. startswith() and endswith()

They check whether the string begins or ends with a specific substring. Returns True or False.

string = "Hello, World!"
print(string.startswith("Hello")) # Output: True
print(string.endswith("World!"))   # Output: True
print(string.startswith("Bye"))    # Output: False

A useful tip: It is very convenient for quick checking of file formats (filename.endswith(".txt")) or link types (url.startswith("https")).

6. isdigit(), isalpha() and isalnum()

They check what the string consists of.

  • isdigit(): True if all characters are numbers.
  • isalpha(): True if all characters are letters.
  • isalnum(): True if all characters are letters or numbers.
string1 = "12345"
string2 = "Hello"
string3 = "Hello123"

print(f"'{string1}' consists of digits? {string1.isdigit()}")   # Output: True
print(f"'{string2}' consists of letters? {string2.isalpha()}")   # Output: True
print(f"'{string3}' consists of letters and numbers? {string3.isalnum()}") # Output: True
print(f"'{string2}' consists of digits? {string2.isdigit()}") # Output: False

A useful tip: These methods are ideal for validating user input before attempting to convert a string to a number or using it further in the program.

A complete guide to methods

Below is a table with a more complete list of string methods for quick reference.

Method Purpose
S.find(str, [start],[end]) Search for a substring in a string. Returns the number of the first occurrence or -1.
S.rfind(str, [start],[end]) Search for a substring in a string. Returns the number of the last occurrence or -1.
S.index(str, [start],[end]) Search for a substring in a string. Returns the number of the first occurrence or causes a ValueError.
S.rindex(str, [start],[end]) Search for a substring in a string. Returns the number of the last occurrence or causes a ValueError.
S.replace(template, replacement[, maxcount]) Replace the template with a replacement. maxcount limits the number of substitutions.
S.split(character) Splitting a line by separator.
S.isdigit() Whether the string consists of numbers.
S.isalpha() Whether the string consists of letters.
S.isalnum() Whether the string consists of numbers or letters.
S.islower() Whether the string consists of lowercase characters.
S.isupper() Whether the string consists of uppercase characters.
S.isspace() Whether the string consists of non-displayed characters (space, \f, \n, \r, \t, \v).
S.istitle() Whether words in a line begin with a capital letter.
S.upper() Converting a string to uppercase.
S.lower() Converting a string to lowercase.
S.startswith(str) Does the string S start with the template str.
S.endswith(str) Does line S end with the str template.
S.join(list) Assembling a line from a list separated by S.
ord(character) Converts a character to its ASCII/Unicode code.
chr(number) Converts the ASCII/Unicode code to a character.
S.capitalize() Converts the first character of the string to uppercase, and all the others to lowercase.
S.center(width, [fill]) Returns a centered string with the fill character at the edges (space by default).
S.count(str, [start],[end]) Returns the number of disjoint occurrences of a substring.
S.expandtabs([tabsize]) Replaces the tab characters \t with spaces.
S.lstrip([chars]) Deleting specified characters (or spaces) at the beginning of a line.
S.rstrip([chars]) Deleting specified characters (or spaces) at the end of a line.
S.strip([chars]) Deleting specified characters (or spaces) at the beginning and end of a line.
S.partition(template) Divides a string by the first occurrence of the separator into three parts: before, the separator itself, and after.
S.rpartition(sep) Divides the string by the last occurrence of the separator into three parts: before, the separator itself, and after.
S.swapcase() Converts lowercase characters to uppercase, and uppercase characters to lowercase.
S.title() Translates the first letter of each word to uppercase, and all the others to lowercase.
S.zfill(width) Adds zeros to the left of the string to the length width.
S.ljust(width, fillchar=" ") Aligns the line to the left, adding the characters fillchar to the right.
S.rjust(width, fillchar=" ") Aligns the line to the right, adding fillchar characters to the left.
S.format(*args, **kwargs) String formatting (a more modern alternative to %).
main.py
测试 1
测试 2
测试 3
测试 4
测试 5
测试 6
测试 7
测试 8
测试 9
测试 10
开发者解答
# Запрашиваем у пользователя, сколько имен файлов он хочет проверить
count_str = input()
# Преобразуем полученную строку в целое число (integer)
count = int(count_str)

# Создаем цикл, который будет повторяться 'count' раз
for i in range(count):
  # На каждой итерации цикла запрашиваем имя файла
  filename = input()
  
  # Проверяем одновременно два условия с помощью 'and':
  # 1. filename.startswith("report_") - проверяет, что строка начинается с "report_"
  # 2. filename.endswith(".txt") - проверяет, что строка заканчивается на ".txt"
  if filename.startswith("report_") and filename.endswith(".txt"):
    # Если оба условия выполнены, выводим "Корректно"
    print("Корректно")
  else:
    # Если хотя бы одно из условий не выполнено, выводим "Некорректно"
    print("Некорректно")

🎉 恭喜! 🎉

你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。

AD

广告

red-snake blue-snake green-snake

正在运行代码...

AI助手

你好!我是你的编程助手。随时向我提问关于 Python 的问题——我可以解释函数、方法,并帮助你完成当前任务!