【问题标题】:Typo - For loop not working correctly with argument [closed]Typo - For 循环无法与参数一起正常工作 [关闭]
【发布时间】:2016-01-23 14:49:59
【问题描述】:
def game(digits):
    five_digit = ""
    for x in range(digits):
        five_digit = str(random.randint(0, 9))
        five_digit += five_digit

当我打印five_digit 时,我得到22885533 等的输出。

【问题讨论】:

    标签: python function python-3.x for-loop


    【解决方案1】:

    问题太多了:

    • 你的变量和函数的命名很糟糕;为什么game 返回一串数字?为什么字符串是任意位数的five_digit

    • 你的缩进被破坏了,无论是在你的问题还是你的解决方案中。 现在修复

    • 重复的字符串连接很慢; str.join 是更好的方法(双关语)

    试试吧

    from string import digits
    from random import choice
    
    def digit_string(length):
        return "".join(choice(digits) for _ in range(length))
    

    或许

    from random import randint
    
    def digit_string(length):
        return "{0:0{1}d}".format(randint(0, 10**length - 1), length)
    

    【讨论】:

    • 我试图缩短我的代码,然后当我引入参数时,我不得不不断更改变量名,我只是一直错过它们,然后当我将代码复制并粘贴到我的问题中时缩进搞砸了,然后我没有检查我刚刚发布的内容,下次我一定会彻底检查我的代码。
    • 请问我的函数和变量应该叫什么?
    • @Navin:函数和变量名称应该是第一级文档——它们应该表明您如何使用它们的含义。你应该能够向一个完全陌生的人展示你的代码(编辑:谁是一个称职的程序员),他们应该能够弄清楚它在做什么。显然,这更像是艺术而不是科学;-/
    【解决方案2】:
    def game(digits):
        five_digit = ""
        for x in range(digits):
            digit = str(random.randint(0, 9))
            five_digit += digit
    

    我知道我哪里出错了,我的 for 循环覆盖了 five_digit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 2019-09-20
      • 2019-07-31
      相关资源
      最近更新 更多