100道python练习题(八)

请看以下第71到80题的代码示例:

  1. 编写一个程序,计算两个整数的最大公约数(GCD)。
def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))

result = gcd(num1, num2)

print("最大公约数是:", result)
  1. 编写一个程序,找出一个列表中第一个重复的元素。
from collections import Counter

def find_first_duplicate(lst):
    counter = Counter(lst)
    for item in lst:
        if counter[item] > 1:
            return item
    return None

num_list = [1, 2, 3, 4, 2, 5, 3]

first_duplicate = find_first_duplicate(num_list)

if first_duplicate:
    print("第一个重复的元素是:", first_duplicate)
else:
    print("列表中没有重复的元素")
  1. 编写一个程序,判断一个数是否是完全平方数。
def is_perfect_square(num):
    if num < 0:
        return False
    sqrt_num = int(num ** 0.5)
    return sqrt_num * sqrt_num == num

number = int(input("请输入一个整数:"))

if is_perfect_square(number):
    print(number, "是完全平方数")
else:
    print(number, "不是完全平方数")
  1. 编写一个程序,将一个字符串列表按照字母顺序进行排序。
string_list = ['apple', 'banana', 'cherry', 'date']

sorted_list = sorted(string_list)

print("按字母顺序排序后的列表:", sorted_list)
  1. 编写一个程序,判断一个字符串是否是有效的数独。
def is_valid_sudoku(board):
    rows = [set() for _ in range(9)]
    cols = [set() for _ in range(9)]
    boxes = [set() for _ in range(9)]
    
    for i in range(9):
        for j in range(9):
            num = board[i][j]
            if num != ".":
                if num in rows[i] or num in cols[j] or num in boxes[(i//3)*3 + (j//3)]:
                    return False
                rows[i].add(num)
                cols[j].add(num)
                boxes[(i//3)*3 + (j//3)].add(num)
    
    return True

# 示例数独二维列表
sudoku = [
    ["5","3",".",".","7",".",".",".","."],
    ["6",".",".","1","9","5",".",".","."],
    [".","9","8",".",".",".",".","6","."],
    ["8",".",".",".","6",".",".",".","3"],
    ["4",".",".","8",".","3",".",".","1"],
    ["7",".",".",".","2",".",".",".","6"],
    [".","6",".",".",".",".","2","8","."],
    [".",".",".","4","1","9",".",".","5"],
    [".",".",".",".","8",".",".","7","9"]
]

if is_valid_sudoku(sudoku):
    print("数独有效")
else:
    print("数独无效")
  1. 编写一个程序,找出一个列表中缺失的数字。
def find_missing_numbers(nums):
    n = len(nums) + 1
    full_set = set(range(1, n))
    num_set = set(nums)
    missing_nums = list(full_set - num_set)
    return missing_nums

number_list = [1, 2, 4, 6, 7, 9]

missing_numbers = find_missing_numbers(number_list)

print("缺失的数字是:", missing_numbers)
  1. 编写一个程序,将一个正整数转换为罗马数字。
def int_to_roman(num):
    roman_dict = {
    
    
        1000: "M",
        900: "CM",
        500: "D",
        400: "CD",
        100: "C",
        90: "XC",
        50: "L",
        40: "XL",
        10: "X",
        9: "IX",
        5: "V",
        4: "IV",
        1: "I"
    }
    roman_num = ""
    for value, symbol in roman_dict.items():
        count = num // value
        roman_num += symbol * count
        num %= value
    return roman_num

number = int(input("请输入一个正整数:"))

roman_number = int_to_roman(number)

print("罗马数字表示:", roman_number)
  1. 编写一个程序,统计一个字符串中每个字符出现的次数。
string = input("请输入一个字符串:")

char_count = {
    
    }

for char in string:
    if char in char_count:
        char_count[char] += 1
    else:
        char_count[char] = 1

print("每个字符出现的次数:")
for char, count in char_count.items():
    print(char, ":", count)
  1. 编写一个程序,找出一个列表中唯一的元素。
from collections import Counter

def find_unique_elements(lst):
    counter = Counter(lst)
    unique_elements = [item for item, count in counter.items() if count == 1]
    return unique_elements

num_list = [1, 2, 3, 4, 2, 5, 3]

unique_elements = find_unique_elements(num_list)

print("列表中唯一的元素:", unique_elements)
  1. 编写一个程序,计算一个数的阶乘。
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

number = int(input("请输入一个非负整数:"))

result = factorial(number)

print(number, "的阶乘是:", result)

这是第71到80题的代码示例。如果您还有其他问题,请随时提问!

猜你喜欢

转载自blog.csdn.net/m0_55877125/article/details/132323351