我试着根据你提供的长度做一个字符串生成器,它从两个数组中获取字母,一个用于Maj,一个用于Min,所以这是我的代码,但它通常返回“b”或错误
from random import randint
def randomstr(stringsize):
Alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
Alphabet2 = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
i = stringsize+1
LocalRanDom = ""
StringGen = []
while i < stringsize+1:
i = i-1
MajorMin = randint(1,2)
print(Alphabet[1])
if MajorMin == 1:
LocalRanDom = randint(1,26)
StringGen.append(Alphabet[LocalRanDom])
if MajorMin == 2:
LocalRanDom = randint(1,26)
StringGen.append(Alphabet2[LocalRanDom])
return StringGen
randomstr(3)
这不是pythonic哈哈看克里斯的评论
首先,我不知道我是为了什么?你必须这样做
i = stringsize+1
然后在那之后,你再也不用它了。你知道吗
如果需要随机字符串生成器,可以执行以下操作。你知道吗
你的代码大部分是不可出售的,但我会通过它来解释我遇到的所有问题。您的问题中也没有正确地缩进代码,所以我在这方面做了一些假设。你知道吗
解决代码问题
字母表生成
这些可以更简洁地表达为:
迭代逻辑
您当前的实现根本不会迭代,因为您分配了
i = stringsize+1
,然后创建了一个while循环,条件是i < stringsize+1
-当第一次计算条件时,这永远不会是真的。你知道吗正确的python方法是使用如下for循环:
字符串串联
从技术上讲,Python中的字符串是列表,但通过在列表中附加单个字符来构造字符串并不是很容易。你知道吗
一种方法是设置
StringGen = ''
,然后在for循环中使用StringGen += c
向其添加字符。然而,this isn't efficient。我将在本文底部提供一个解决方案,以演示一个不涉及循环内串联的实现。你知道吗对条件逻辑误用整数
代码:
使用这种等效逻辑可以更清楚地说明:
替代实现
您的方法的精细变化
这里有一个不同的
randomstr
实现,它基于以下几点:我最擅长的
这是一个更简洁的实现,我将提供的情况下,你想要它,但它偏离了你原来的方法很多。你知道吗
示例运行
这些是您通过上述任一实现获得的输出的示例。你知道吗
相关问题 更多 >
编程相关推荐