【问题标题】:While Loop and if statementWhile 循环和 if 语句
【发布时间】:2016-01-12 14:47:02
【问题描述】:

编辑清楚我想要什么

我想要一个随机的 7 到 14 个字符长的字符串,其中包含字母 'd' 到 'g',没有连续的重复字母。 预期输出示例:dgfede

import random

num = random.randint(7,14)
print(num)

message=""
end = False 
for n in range(num):

    while end == False:
        newnum= random.randint(100,103)           
        val=chr(newnum)
        val = newnum
        message +=chr(val)


        if(message != message[-1:]):
            print(message)
            end=True
        else:
            message =""

【问题讨论】:

  • 你的代码应该做什么?您当前有一个无限循环。 if 条件永远不会满足,因为 message 是一个字母,message[-1] 也是如此,因此您总是将 message 转换为空字符串并重做所有事情。此外,您对“val”进行了两次连续分配。
  • 该代码应该重复自己,直到它输出类似 efdeeg 的东西,这是 num 生成的长度
  • 您应该解释您希望代码具有的确切功能,以便人们帮助您。如果我不得不猜测,你想要一个随机的 7 到 14 个字符长的字符串,其中包含字母 'd' 到 'g',没有连续的重复字母。对吗?
  • 是的,这就是我希望程序做的事情

标签: python


【解决方案1】:

应该这样做:

import random

num = random.randint(7, 14)
print num

message = ""
prevnum = -1
for n in range(num):
    newnum = random.randint(100, 103)
    while newnum == prevnum:
        newnum = random.randint(100, 103)
    prevnum = newnum
    message += chr(newnum)

您在代码中犯了许多错误,您应该检查它们。

【讨论】:

    【解决方案2】:

    您可以将choice 与replace 结合使用:

    import random
    num = random.randint(7, 14)
    chars = "defg"
    result = ""
    for n in range(num):
        result += random.choice(chars.replace(result[-1:],''))
    

    【讨论】:

      猜你喜欢
      • 2013-06-09
      • 2012-06-18
      • 2015-05-19
      • 1970-01-01
      • 2014-01-21
      • 2015-11-08
      • 2016-02-13
      • 2017-01-15
      • 1970-01-01
      相关资源
      最近更新 更多