Python初学者练习题(二)

1、编写一个程序来检查一个字符串是否以另一个字符串结尾。

定义函数ends_with(),有两个参数string1string2

在函数内,如果string1string2结尾,则返回True,否则返回False

【思路:使用endswith()】

def ends_with(string1, string2):
    if string1.endswith(string2):
        return True
    else:
        return False
# 获取输入字符串
string1 = input()
string2 = input()
# 调用函数
print(ends_with(string1, string2))

2、编写一个程序来翻转给定句子中的单词顺序。

定义函数reverse_sentence_words(),该函数接受一个参数sentence(表示句子)。

该函数应该返回翻转其单词顺序的句子。

考虑任何由空格字符分隔的序列作为一个单词。

不要在句子的开头或结尾添加额外的空格。

【思路:先将整个句子颠倒,在将单个单词的字母顺序颠倒,再将单词组成句子】

def reverse_sentence_words(sentence):
    # 首先颠倒整个句子
    reversed_sentence = sentence[::-1]
    # 将句子按空格分割成单词列表
    words = reversed_sentence.split()
    # 颠倒每个单词内的字符
    reversed_words = [word[::-1] for word in words]
    # 将单词列表重新组合成句子
    reversed_sentence = ' '.join(reversed_words)
    # 返回翻转单词顺序后的句子
    return reversed_sentence
# 获取输入
sentence = input()
# 调用函数并打印结果
print(reverse_sentence_words(sentence))

3、编写一个程序来检查是否可以重新排列给定的单词字母来形成回文单词。 回文是一个从前往后和从后往前读都一样的字符串,例如popracecar等。

定义函数can_form_palindrome()的函数,参数为word(即输入的单词)。

在函数内,如果输入字符串可以重新排列以形成回文,则返回True,否则返回False

Counter模块可以帮助我们计算字符串中每个字符出现的次数。如果一个字符串是回文,那么它的每个字符都必须出现偶数次,除非字符串长度为奇数,那么只有一个字符可以出现奇数次。

【思路:如果一个字符串是回文,则他的字符出现的次数都是偶数次,除非长度是奇数,那么他只有一个字符是奇数个,其他字符都必须是偶数个。】

from collections import Counter
def can_form_palindrome(word):
    char_count = Counter(word)
    odd_count = 0
    for count in char_count.values():
        if count % 2 != 0:
            odd_count += 1
        if odd_count >= 2:
            return False
    return True
# 从用户处获取输入
word = input()
# 调用函数
print(can_form_palindrome(word))

 4、编写一个程序来判断一个数字是否为Harshad数。

 如果一个数字可以被它的数字之和整除,那么它就是一个Harshad数,

如171:number = 171 1 + 7 + 1 = 9 [数字之和] 9 正好整除 171 定义函数is_harshad(),参数为num(整数)。

在函数内,判断该数字是否为Harshad数,如果是,返回True,否则返回False

【思路:本题需要注意的就是没有规定是一个几位数,所以要先将整数转换成字符串,在将字符串转换成整形,再进行求和】

def is_harshad(num):
    l = list(str(num))
    l2 = [int(i) for i in l]
    sum1 = sum(l2)
    if num % sum1 == 0:
        return True
    else:
        return False
# 获取用户输入
num = int(input())

# 显示输出
print(is_harshad(num))

 5、编写一个程序来检查一个数字是否是双基回文数。

回文是指从前往后读和从后往前读都一样的字母、数字的序列。

双基回文数是指在十进制和二进制表示中都是回文的数字。

例如:585 = 1001001001是一个双基回文,其二进制是回文形式,十进制也是回文形式。

定义函数check_double_base_palindrome(),参数为整数。

如果是双基回文,返回True,否则返回False

【思路:需要注意的就是在函数内,检查数字的十进制和二进制形式是否都是回文。】

def check_double_base_palindrome(number):

    decimal_str = str(number)  # 将数字转换为字符串形式
    binary_str = bin(number)[2:]  # 将数字转换为二进制字符串形式,并去除前缀 "0b"

    if decimal_str == decimal_str[::-1] and binary_str == binary_str[::-1]:
        return True
    else:
        return False


# 获取用户输入
number = int(input())

# 调用函数
print(check_double_base_palindrome(number))

猜你喜欢

转载自blog.csdn.net/qq_69424518/article/details/134043303