示例:
输入: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
输入: i j k ,范围输入:4
输出 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)
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)))
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 和优化的代码。