📜  生成n位数python(1)

📅  最后修改于: 2023-12-03 14:56:16.009000             🧑  作者: Mango

生成n位数Python

Python是一种高级编程语言,具有简单易学、可读性强、面向对象和解释型等优点。生成n位数是Python编程的一种基本应用,本文将介绍如何使用Python生成n位数。

一、随机生成n位数

使用Python的random库可以随机生成数字,结合for循环可以生成任意位数的数字。

import random

def n_digit_number(n):
    """
    随机生成n位数
    """
    start = 10 ** (n - 1) # n位数的最小值
    end = (10 ** n) - 1   # n位数的最大值

    num = random.randint(start, end) # 生成随机数
    return num
二、生成特定规则的n位数
1.生成质数
def is_prime(num):
    """
    判断一个数是否为质数
    """
    if num <= 1:
        return False

    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False

    return True

def n_digit_prime(n):
    """
    随机生成n位质数
    """
    while True:
        num = n_digit_number(n)
        if is_prime(num):
            return num
2.生成回文数
def is_palindrome(num):
    """
    判断一个数是否为回文数
    """
    num_str = str(num)
    return num_str == num_str[::-1]

def n_digit_palindrome(n):
    """
    随机生成n位回文数
    """
    start = 10 ** (n - 1) # n位数的最小值
    end = (10 ** n) - 1   # n位数的最大值

    while True:
        num = random.randint(start, end)
        if is_palindrome(num):
            return num
三、生成不重复的n位数
1.排列组合
import itertools

def n_digit_permutation(n):
    """
    生成n位不重复的数字
    """
    list_num = list(range(10)) # 数字列表
    list_permutation = itertools.permutations(list_num, n) # 生成n个数字的全排列

    for i, p in enumerate(list_permutation):
        if i == 0: # 第一个排列有前导0
            continue

        num = int("".join(map(str, p)))
        yield num
2.随机生成
def n_digit_no_repeat(n):
    """
    随机生成n位不重复的数字
    """
    list_num = list(range(10)) # 数字列表
    random.shuffle(list_num)   # 随机打乱数字顺序

    num = "".join(map(str, list_num[:n])) # 取前n个数字

    return int(num)
四、实战应用
1.验证码生成器
def generate_captcha(n):
    """
    生成n位数字验证码
    """
    return n_digit_no_repeat(n)
2.订单号生成器
import time

def generate_order_number(n):
    """
    生成n位数字订单号
    """
    timestamp = int(time.time())         # 当前时间戳
    order_number = n_digit_no_repeat(n)  # 随机n位数字
    return str(timestamp) + str(order_number)

以上是Python生成n位数的基本方法和实战应用,欢迎探索和使用。