用整数序列替换每个字符

replacing every character with a sequence of integers

提问人:Perfectoid 提问时间:5/2/2022 最后编辑:Perfectoid 更新时间:5/2/2022 访问量:172

问:

这是我代码中的一个函数

def seq():
   q=1
   n=rann()
   List=[n]
   while q<n:
       if (n % 2):
           n = 3*n + 1
           List.append(n)
       else:
           n=n//2
           List.append(n)
   if (len(List)>=len(y)):
       print(List)
   else:
       return(rann())

x=input("enter name")    #the next four lines of the code are my first trial.
y= [char for char in x]
for i in y:
    y[i]=rann()
seq()

我有两个函数,第一个函数 rann() 生成一个整数,另一个(上面的代码)根据该数字生成一个序列。我想接受一个输入 x 并用生成的序列替换每个字符。我试过这样做

text = 'bat ball'

y=[char for char in text]
y[0:] = rann()
print(y)

例如,让输入是“bat ball”,所以我想要的是用序列的每个项替换输入的每个字符。 我知道有很多事情不对,但我想不出另一种方法。

python-3.x 函数 序列

评论

1赞 user2736738 5/2/2022
分享一个输入和输出的例子
0赞 crissal 5/2/2022
你的输入和输出是什么?你想达到什么目的?
0赞 AboAmmar 5/2/2022
您能否提供您期望的示例输入和相应的输出?你的措辞不是很清楚。
0赞 Perfectoid 5/2/2022
例如,让输入是“bat ball”,所以我想要的是用序列的每个项替换输入的每个字符。

答:

0赞 AboAmmar 5/2/2022 #1

你是说这样?我设计了一个来生成字符的 ascii 代码值,但你明白了。rann(x)x

# example rann()
def rann(x):
    return [ord(ch) for ch in x]

def seq(n):
   q = 1
   List = [n]
   while q < n:
       if n % 2:
           n = 3*n + 1
           List.append(n)
       else:
           n = n // 2
           List.append(n)
   if len(List) >= len(y):
       print(List)
   else:
       return n

text = 'bat ball'
x = [char for char in text]
y = rann(x)
print(y)

[seq(n) for n in y]
0赞 srattigan 5/2/2022 #2

看看您尝试在此处生成哪种整数或序列会很有用 - 请发布一个示例。

据我所知,您想根据输入字符串生成一个数字列表吗?

最简单的方法可能是对每个字符使用 ASCII 代码,如下所示:

def seq():
    '''
    (None) -> List of int
    Get user input and convert to int list
    '''
    nums = []
    text = input("Enter text: ")
    for ch in text:
        nums.append(ord(ch))
    return nums

从 int 值构建新列表比更改正在迭代的列表更容易。

如果 rann 从 char 生成 int 列表,请将上面的 ord 替换为 rann 并让它返回 int 列表。

您期望输出的样本在这里真的很有帮助。