Skip to main content
 首页 » 编程设计

python之如何使 'while' 循环将循环条件的结果打印到单行(串联)中

2025年05月04日16jirigala

这是我的代码:

test = { 
    'a':1, 'b':2 , 'c':3 , 'd':4 
} 
 
x = raw_input("Type 'abcd' ") 
y = len(x) 
z = 1 
while z < y+1: 
    a = x[z-1] 
    print test[a] 
    z = z + 1 

重点是制作一个基本的编码器,显然这段代码只是为了建立一个我可以构建的准代码。我的问题是:

我无法将“while”循环的结果打印成一行,这样,不仅打印成一行,而且连接成一个更大的整数(或字符串,比如代码的结果显示字母而不是整数,以从这些字母创建一个字符串)。尽管在这段代码中,我特别希望代码的结果是整数“1234”。不是:

1 
2 
3 
4 

本质上,我的问题是:如何打印 while 循环的结果,使它们连接整数(或字母)以创建更大的数字(或字符串)?我不想要结果 1个 2个 3个 4

变为 10,但我希望它变为整数 1234。我在网上看过,但找不到任何适合我的东西。事实上我什么也没找到。

请您参考如下方法:

首先,在这里使用 while 循环不是最佳选择,而是使用 for 循环,它被设计用来循环迭代器,如数据结构(a字符串只是一个字符序列):

for character in x: 
    print(test[character]) 

然后不打印字符,而是将它们存储在列表中。

characters = [] 
for character in x: 
    characters.append(str(test[character])) 

然后我们可以将它们连接成一个字符串(我们之前制作了数字字符串以使这一步更容易),并从该字符串制作一个 int:

int("".join(characters)) 

Python 支持一种更简单的方法来进行这种列表构造 - list comprehension :

characters = [str(test[character]) for character in x] 

这会生成与上面的 for 循环相同的列表,但速度更快、更简洁。

这意味着我们可以将您的程序编写为:

test = {'a': 1, 'b': 2 , 'c': 3 , 'd': 4} 
 
user_input = raw_input("Type 'abcd':") 
 
number = int("".join(str(test[character]) for character in user_input)) 

作为将数字字符串连接起来然后返回的替代方法,我们也可以用数学来完成:

number = sum((10 ** power) * test[character]  
             for power, character in enumerate(reversed(user_input))) 

我们在这里做的是从右边开始,取每个数字,乘以它所在列的 10 的次方,然后求和。