在Python中,当某些字符满足某些条件时,如何添加赋值?

2024-06-28 11:02:11 发布

您现在位置:Python中文网/ 问答频道 /正文

当字母和数字在随机字符串中的某些位置时,我必须进行加减值,如下所示:

1。字符串中的字母=+1

2个。大写字母开头字符串=+1

3岁。字符串内或结尾的大写字母=-2

4岁。字符串中的数字或其他符号=-2,每行中的每个字母扣除.25 字符串。

我可以得到随机的字符串,但是我很难用“x”来添加这些值。你知道吗

import random
import math

x=0

def randstr(localX):
    a = 'abcdefghijklmnopqrstuvwxyz'
    b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    c = '0123456789'
    d = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    rs = (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d))
    print rs
    if rs[0] in b:
        localX += 1
    if rs[0] in a:
        localX += 1
    elif rs[1] in a:
        localX += 1
    elif rs[2] in a:
        localX += 1
    elif rs[3] in a:
        localX += 1
    elif rs[4] in a:
        localX += 1
    elif rs[5] in a:
        localX += 1
    elif rs[6] in a:
        localX += 1
    elif rs[7] in a:
        localX += 1
    elif rs[8] in a:
        localX += 1
    elif rs[9] in a:
        localX += 1
    if rs[1] in b:
        localX -= 2
    elif rs[2] in b:
        localX -= 2
    elif rs[3] in b:
        localX -= 2
    elif rs[4] in b:
        localX -= 2
    elif rs[5] in b:
        localX -= 2
    elif rs[6] in b:
        localX -= 2
    elif rs[7] in b:
        localX -= 2
    elif rs[8] in b:
        localX -= 2
    elif rs[9] in b:
        localX -= 2
    if rs[0] in c:
        localX -= 2
        if rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[1] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[2] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[3] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[4] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[5] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[6] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[7] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[8] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [9] in a:
            localX -= .25
    elif rs[9] in c:
        localX -= 2
        if rs [0] in a:
            localX -= .25
        elif rs [1] in a:
            localX -= .25
        elif rs [2] in a:
            localX -= .25
        elif rs [3] in a:
            localX -= .25
        elif rs [4] in a:
            localX -= .25
        elif rs [5] in a:
            localX -= .25
        elif rs [6] in a:
            localX -= .25
        elif rs [7] in a:
            localX -= .25
        elif rs [8] in a:
            localX -= .25
    return rs
    return localX
randstr(localX)

Tags: 字符串inimportreturnif结尾字母数字
2条回答

为了让函数在全局范围内影响x的值,必须在全局范围内初始化x。你知道吗

现在,它正在函数的本地范围内初始化。要么返回x的值,要么在全局范围内初始化它(。。在调用函数之前,例如:

选项0:

#declare x at global scope
x = 0
#declare the function affecting x anywhere you want
def randstr():
    global x
    #..... code affecting the value of x
    return whatever
#then use your function affecting x
randstr()

选择1:(更好)

#pass x as argument 
def randstr(x):
    #..... code affecting the value of x
    return x
x = 0
#other code affecting x
#.....
#pass x as argument and modify the value of your local x
x = randstr(x)

很明显,我认为你的代码还有其他问题,因为完全没有循环,这确实需要解决,但我在这里推断你是一个学生,正在学习。你知道吗

for characterVar in stringVar:
        #code that is repeated for each character
        #handling the character by manipulatin characterVar
        if characterVar == "a" :
            #do stuff if a character in stringVar is a "a"

是你应该在绳子上循环的方式

一些能起作用的例子。请注意,代码应该改为使用regex,而且字符串的生成方式很糟糕,但是这与最初的答案不同,对于OP来说不会太复杂

import random
import math

def randStr():
    x = 0.0
    small = ('abcdefghijklmnopqrstuvwxyz')
    capitals = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    digits = ('0123456789')
    d = ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
    rs = (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d)) + (random.choice(d))
    qtyOfLetters = 0
    for char in rs:
        if char in small or char in capitals:
            qtyOfLetters += 1
    x += qtyOfLetters
    if rs[0] in capitals:
        x += 1.0
    for c in rs:
        if c in capitals:
            x -= 2.0
        if not ((c in capitals) or (c in small)):
            x -= (2.0 + 0.25 * qtyOfLetters)
    return (rs,x)

result = randStr()
print ("Generated string : '" + str(result[0]) +"'")
print ("result : " + str(result[1]))

首先让我说,你正在学习编写软件,这很好,我认为Python是初学者的完美语言。这听起来像是你在教自己,跳进去弄脏你的手是一个很好的学习方法。你知道吗

然而,你需要反思你的时间是如何在学习中得到最好的利用的。当你刚开始的时候,最大的问题往往是不知道“问什么才是正确的问题?”如果你从一开始就没有听说过for循环,你怎么知道要读一本关于for循环的教程呢?你知道吗

有两种解决方案:

1)从一些指导性教程开始,以便您快速了解最常见的语言功能。如果你掌握了基本的知识,你真的会节省很多时间。你知道吗

2)学会认识到什么时候做某事“应该有更好的方法”。如果你在执行一项任务时要付出很多努力,通常有更好的方法。例如,当您必须反复键入相同的代码(或复制粘贴代码块,在这里和那里更改位)时,您可以尝试搜索“how can I reduce copy pasting in code”或“how can I reduce code duplication”。当然,这只是一个例子,但是对于程序员来说,学习何时查阅文档是一项非常重要的技能。你知道吗

一旦你觉得自己学到了一点知识,你的程序就会很快改进。以下是一些改进现有代码的技巧:

string模块中有一些预定义的字符串可以提高代码的可读性

>>> import string
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.lowercase + string.uppercase + string.digits
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

下面是一个简单的for循环的示例

>>> my_string = "hello"
>>> for my_char in my_string:
...     print my_char
... 
h
e
l
l
o

另一个包含每个字符的索引:

>>> for my_index, my_char in enumerate(my_string):
...     print my_index, my_char
... 
0 h
1 e
2 l
3 l
4 o

这里有一个很好的引用:

“Work smarter, not harder”

Carl Barks

当然,这并不意味着你不应该努力工作,但要聪明地知道什么时候你可以节省自己的时间。你知道吗

相关问题 更多 >