好吧,我的指导方针是:
我遇到了没有定义x
的问题。我添加了一些省略号来帮助压缩。所以计划是:
import random
import math
def randstr():
global x
int(x=0)
a = ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
rs = ((random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)) + (random.choice(a)))
print rs
if rs[0] == 'A' or 'B' or 'C' or 'D' or 'E' or 'F' or 'G' or 'H' or 'I' or 'J' or 'K' or 'L' or 'M' or 'N' or 'O' or 'P' or 'Q' or 'R' or 'S' or 'T' or 'U' or 'V' or 'W' or 'X' or 'Y' or 'Z':
x += 1
if rs[0] == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z':
x += 1
elif rs[1] == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z':
x += 1
...
elif rs[9] == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z':
x += 1
if rs[1] == 'A' or 'B' or 'C' or 'D' or 'E' or 'F' or 'G' or 'H' or 'I' or 'J' or 'K' or 'L' or 'M' or 'N' or 'O' or 'P' or 'Q' or 'R' or 'S' or 'T' or 'U' or 'V' or 'W' or 'X' or 'Y' or 'Z':
x -= 2
...
elif rs[9] == 'A' or 'B' or 'C' or 'D' or 'E' or 'F' or 'G' or 'H' or 'I' or 'J' or 'K' or 'L' or 'M' or 'N' or 'O' or 'P' or 'Q' or 'R' or 'S' or 'T' or 'U' or 'V' or 'W' or 'X' or 'Y' or 'Z':
x -= 2
if rs[0] == '1' or '2' or '3' or '4' or '5' or '6' or '7' or '8' or '9' or '0':
x -= 2
if rs [1] == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z' or 'A' or 'B' or 'C' or 'D' or 'E' or 'F' or 'G' or 'H' or 'I' or 'J' or 'K' or 'L' or 'M' or 'N' or 'O' or 'P' or 'Q' or 'R' or 'S' or 'T' or 'U' or 'V' or 'W' or 'X' or 'Y' or 'Z':
x -= .25
...
elif rs [9] == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z' or 'A' or 'B' or 'C' or 'D' or 'E' or 'F' or 'G' or 'H' or 'I' or 'J' or 'K' or 'L' or 'M' or 'N' or 'O' or 'P' or 'Q' or 'R' or 'S' or 'T' or 'U' or 'V' or 'W' or 'X' or 'Y' or 'Z':
x -= .25
...
elif rs [8] == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'i' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z' or 'A' or 'B' or 'C' or 'D' or 'E' or 'F' or 'G' or 'H' or 'I' or 'J' or 'K' or 'L' or 'M' or 'N' or 'O' or 'P' or 'Q' or 'R' or 'S' or 'T' or 'U' or 'V' or 'W' or 'X' or 'Y' or 'Z':
x -= .25
return rs
print randstr()
randstr()
您必须声明它,而不是
int(x=0)
-调用函数:另外,似乎不需要在函数中使用
global x
。在所以,这是你的一部分功能:
^{pr2}$还有几个问题。在
首先,
rs
的声明。您使用的是+
,但是您应该使用,
,否则python将只对所有值求和并返回一个数字。同时拆除不必要的支架:或者只使用一个循环:
您的
if
语句也没有像您认为的那样做。请改用in
运算符:其他条件语句也是如此。希望这有帮助!在
因此,如果在代码的开头添加
x=0
或只是x=int(0)
,那么它就可以工作了,因为您试图将x=
定义为int()
,这是不可能的。在这应该可以解决“x未定义”的问题,并且您还应该能够除去
global x
在继续之前,您还需要注意一些其他错误。在
第一个问题是您的
if
语句。看看这个例子:
在人眼看来,这是正确的,但计算机的看法不同。将条件与
and
或or
组合时,计算机将从左到右检查条件。在这种情况下,计算机会看到:第二个条件,在
^{pr2}$or
后面,与说if bar == True:
条是字符串相同,任何字符串都是总是真的,因此dosomething()
函数将始终执行。通过将上述示例更改为:现在,计算机将执行它:
简化代码
我想指出的第二件事是编程中的首要规则之一:如果你多次输入同一个东西,可能有更好的方法
在您的代码中,设想用
if rs[9] == 'A' or rs[9] == 'B'
替换已经很长的条件,等等,它将变得非常长和混乱。制作一个字母表的列表,然后对照列表检查变量,会简单得多。例如:in
关键字告诉Python检查rs[0]
的值是否在list字母列表中,或者换句话说,如果它是字母表中的字母。现在,您可以用一个更短、更干净的解决方案替换所有这些冗长而混乱的条件:)正如aIKid所指出的,字符串也是iterable,因此可以用所有字母的字符串(
alphabet = "ABCDEF"
…)来替换列表。任何一个都可以。在至于你问题的最初答案,aIKid回答得很完美,我只是想试着用一些其他的方法来帮助你提高!在
相关问题 更多 >
编程相关推荐