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

问题描述 投票:0回答:6

示例:

输入: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)
python list nested-loops
6个回答
1
投票

使用列表理解

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

0
投票
  1. 输入: i j k ,范围输入:4

  2. 输出 I1,I2,I3,J1,J2,J3,K1,K2,K3 代码是

    ls=input("输入:").upper().split() rang=int(input("请输入数字:")) 第一=[] 对于 ls 中的 i: 对于范围 (1,rang) 中的 j: lst+=[i+str(j)] 打印(lst)


-1
投票

my_list
up_list
new_list2
字符串,而不是列表。为了清楚起见,您应该为变量提供描述变量用途的名称。

此外,您还可以在

new_list
中创建输出的每个元素,然后将其附加到 string
new_list2
,然后迭代该字符串的每个 character 并将其附加到字符串
var
,并且它们之间有空格。这完全没有意义。相反,您可以简单地创建一个在嵌套循环中填充的 list,然后使用
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)))

-2
投票
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)

-2
投票

在第二个 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 += " "

-2
投票

如果我从您的代码开始,问题仅归因于带有

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 和优化的代码。

© www.soinside.com 2019 - 2024. All rights reserved.