【问题标题】:Why am I not getting four unique numbers returned?为什么我没有返回四个唯一编号?
【发布时间】:2023-02-04 22:22:39
【问题描述】:

我正在尝试创建一个返回由 4 个唯一值组成的 4 位字符串的函数。 我目前有以下代码:

def generateNum():
    ValidNum = False
    while ValidNum == False:
        RanNumber = random.randint(1000, 9999)
        RanNumber = str(RanNumber)
        for number in RanNumber:
            if RanNumber.count(number) > 1:
                ValidNum = False
            else:
                ValidNum = True
                return RanNumber

print(generateNum())

有人可以解释这段代码有什么问题以及我可以做些什么来修复它吗? 谢谢。

【问题讨论】:

  • 您没有检查所有数字的计数是否为 1。如果任何数字的计数为 1(例如 1000),它会返回一个数字
  • 如果您点击else...,您会立即返回,但您必须检查所有号码。

标签: python


【解决方案1】:

您可以使用 set() 的一种方法,因为它不允许重复:

def generateNum():
    import random
    ValidNum = False
    while ValidNum == False:
        RanNumber = random.randint(1000, 9999)
        RanNumber = str(RanNumber)
        if len(set(RanNumber))!=4:
            ValidNum = False
        else:
            ValidNum = True
            return RanNumber

print(generateNum())

【讨论】:

  • 多谢。我一定要试试这个!
  • 不客气!
【解决方案2】:
import random

def generate_random():
    num = ''
    while len(num) < 4:
        random_int = random.randint(0,9)
        if str(random_int) in num:
            pass
        else:
            num += str(random_int)         
    return num      
    

print(generate_random())

这应该可以正常工作

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2021-11-17
    • 2018-12-05
    相关资源
    最近更新 更多