将输入的每个字符串与从1到n的数字连接起来,创建一个列表.对于输出,字符必须大写



示例:

输入:i j k

输入n=4 的值

输出:I1 I2 I3 I4 J1 J2 J3 J4 K1 K2 K3 K4

我似乎无法把单词和数字分开。我得到

I 1 I 2 I 3 I 4 J 1 J 2 J 3 J 4 K 1 K 2 K 3 K 4 

而不是

I1 I2 I3 I4 J1 J2 J3 J4 K1 K2 K3 K4 
my_list = input("Input: ")
up_list = my_list.upper()
var =''
new_list2 = ""
lists = up_list.split()
n = int(input("Enter a value for n: "))
for x in lists:
for y in range(1, n+1):
w = str(y)
new_list = ('{}{}'.format(x, y))
new_list2 += new_list
for i in new_list2:
var += i
var += " "
print(var)

使用列表理解:

lst = input("Input: ").upper().split()
n = int(input("Enter a value for n: "))
pairs = ' '.join(f'{s}{i}' for s in lst for i in range(1, n+1))
print(pairs)
# I1 I2 I3 I4 J1 J2 J3 J4 K1 K2 K3 K4

my_listup_listnew_list2字符串,而不是列表。为了清晰起见,您应该为变量命名,以描述变量的用途。

此外,您可以在new_list中创建输出的每个元素,然后将其附加到字符串new_list2,然后迭代该字符串的每个字符,并将其添加到字符串var(其间留有空格(。这毫无意义。相反,您可以简单地创建一个列表,将其填充到嵌套循环中,然后使用str.join打印用空格分隔的列表,或者将列表拆包到print函数中并指定分隔符。

考虑以下内容:

letters = input("Input: ").upper().split()
n = int(input("Enter a value for n: "))
result = []                 # Create an empty LIST
for letter in letters:
for i in range(1, n+1):
result.append(f"{letter}{i}")
print(" ".join(result))
# or
print(*result, sep=" ")

您可以将嵌套的循环压缩为列表理解,如下所示:

result = [f"{letter}{i}" for letter in letters for i in range(1, n+1)]

或者,如果您只想打印它,您可以使用驱动列表理解的生成器表达式作为str.join:的参数

print(" ".join(f"{letter}{i}" for letter in letters for i in range(1, n+1)))
letters = input("Type letters:")
letters = letters.upper()
letter_list = letters.split(" ")
n = int(input("Enter a value for n: "))  # assuming you will only input an integer here
for letter in letter_list:
for i in range(1, n+1):
print(f"{letter}{i}", end=" ")

或者,如果您出于任何原因试图保存字符串,这也会起作用:

letters = input("Type letters:")
letters = letters.upper()
letter_list = letters.split(" ")
n = int(input("Enter a value for n: "))
my_str = ""
for letter in letter_list:
for i in range(1, n+1):
my_str += f"{letter}{i} "
print(my_str)

在第二个for循环中:

for i in new_list2:
var += i
var += " "

你可以这样做,这样每个人都有空间:

for i in range(len(new_list2)):
var += new_list2[i]
if i % 2 == 0:
var += " "

如果我从您的代码开始,问题仅由new_list2的两行引起。它应该是一个列表(而不是字符串(,并且应该附加(而不是添加(值。这是新代码,非常接近您的代码。但是,您应该真正注意类型、名称和每个变量之间的对应关系。

my_list = input("Input: ")
up_list = my_list.upper()
var =''
new_list2 = [] # instead of new_list2 = ""
lists = up_list.split()
n = int(input("Enter a value for n: "))
for x in lists:
for y in range(1, n+1):
w = str(y)
new_list = ('{}{}'.format(x, y))
new_list2.append(new_list) # instead of new_list2 += new_list
for i in new_list2:
print(i)
var += i
var += " "
print(var) # I1 I2 I3 I4 J1 J2 J3 J4 K1 K2 K3 K4 

其他答案将为您提供更多pyhtonic和优化的代码。

相关内容

最新更新