Python while循环生成随机数的替代方法

Python while循环生成随机数的替代方法,python,python-3.x,for-loop,while-loop,Python,Python 3.x,For Loop,While Loop,每次程序运行时,我都会生成一个随机数,并用一个唯一的随机数创建一个文件名。 有人能帮我在下面的代码中选择while循环。 import random import os import sys class Random_no: def generate_random_number(self): random_number = random.randint(1, 10) return str(random_number) def exec

每次程序运行时,我都会生成一个随机数,并用一个唯一的随机数创建一个文件名。 有人能帮我在下面的代码中选择while循环。

import random
import os
import sys


class Random_no:
    def generate_random_number(self):
        random_number = random.randint(1, 10)
        return str(random_number)
    
    def execute(self):
        test_flag=False
        save_path = 'C:\\Users\\myname\\Desktop\\config_test'
        while not test_flag:
            config_file_name = "config" + "_" + self.generate_random_number() + ".json"
            print(f"config file name is :{config_file_name}")
            if os.path.exists(save_path + "\\" + config_file_name):
                test_flag=False
                print(f"FILE ALREADY EXITS:{config_file_name}")
            else:
                test_flag=True
            config_path = os.path.join(save_path, config_file_name)
        with open(config_path, 'w+'):
            pass
            
        print(config_path)

obj = Random_no()
obj.execute()

提前感谢:)

我认为对于这种情况,递归是更合适的解决方案。在这个版本中,代码更像Python

导入操作系统
随机输入
类别编号:
base_dir=os.path.abspath(os.path.dirname(_文件__))
def get_random_num(自我):
返回random.randint(1,10)
def create_配置(自身,路径=无):
如果不是路径:
路径=self.base\u dir
filename=f'{str(self.get_random_num())}.json'
file_path=os.path.join(路径,文件名)
如果os.path.存在(文件路径):
打印(f'文件已存在:{FILE_path}')
self.create_配置(路径)
其他:
打开时(文件路径“w+”):
打印(文件路径)
rn=randomNo()
rn.create\u config(path=r'C:\Users\myname\Desktop\config\u test')

我还认为您需要注意检查文件夹的存在性并限制创建文件的尝试次数,否则脚本可能会在某一时刻进入无限递归。

我认为对于这种情况,递归是更合适的解决方案。在这个版本中,代码更像Python

导入操作系统
随机输入
类别编号:
base_dir=os.path.abspath(os.path.dirname(_文件__))
def get_random_num(自我):
返回random.randint(1,10)
def create_配置(自身,路径=无):
如果不是路径:
路径=self.base\u dir
filename=f'{str(self.get_random_num())}.json'
file_path=os.path.join(路径,文件名)
如果os.path.存在(文件路径):
打印(f'文件已存在:{FILE_path}')
self.create_配置(路径)
其他:
打开时(文件路径“w+”):
打印(文件路径)
rn=randomNo()
rn.create\u config(path=r'C:\Users\myname\Desktop\config\u test')

我还认为您需要注意检查文件夹的存在性,并限制创建文件的尝试次数,否则脚本可能会在某一时刻进入无限递归。

它有什么问题?您应该在使用
os.path.join()时保持一致
而不是通过字符串连接来创建路径名。欢迎使用堆栈溢出!如果代码有效,并且您正在寻找关于改进它的建议,那么这是一个合适的地方。但是请先看。它有什么问题?您应该一致使用
os.path.join()
而不是使用字符串连接来创建路径名。欢迎使用堆栈溢出!如果代码有效,并且您正在寻找关于改进它的建议,那么这是一个合适的地方。但请先看,我认为递归不适合这种情况(至少在python中是这样)。它会不必要地膨胀调用堆栈(有可能出现递归错误),而且由于这是不可预测的,因此每次执行它时,您都会得到一个不同的堆栈跟踪,以跟踪在else分支中引发的异常。也请阅读。@danzel哦,知道这个很好,谢谢你提供的信息。我认为递归不适合这种情况(至少在python中)。它会不必要地膨胀调用堆栈(有可能出现递归错误),而且由于这是不可预测的,因此每次执行它时,您都会得到一个不同的堆栈跟踪,以跟踪在else分支中引发的异常。也请阅读。@danzel哦,很高兴知道,谢谢你提供的信息。