我创建了部分代码,用户在其中输入字母“A”或“B”。程序的目的是判断字母是否可以交换为全字母“A”,用户必须输入可能发生交换的大小。
例如,如果用户输入 AABB 并且交换大小为 3,则输出应为 BBAB,其中两个“A”变为“B”,一个“B”变为“A”。
目前我的代码似乎没有替换字母并在出现错误的地方交换它们。
我的代码如下:
row = input('Enter the row and the side (A/B): ')
swap = int(input('How many places can be swapped? '))
if row[0] == B and row[swap] == B:
row[0] = replace('B' , 'A')
row[swap] = replace('B' , 'A')
print(row)
当前代码输出以下内容:
Enter the row and the side (A/B): BBAA
How many places can be swapped? 2
Traceback (most recent call last):
File "program.py", line 4, in <module>
if row[0] == B and row[swap] == B:
NameError: name 'B' is not defined
代码应该输出 AAAA。
感谢您的帮助。
最佳答案
问题:
- 您的状况检查有误。
如果 row[0] == B 且 row[swap] == B:
。这里B
不是变量而是字符串文字。因此您应该使用'B'
。经过这些更正后,代码也无法工作。
您可以使用maketrans
和translate
:
row = input('Enter the row and the side (A/B): ')
swap = int(input('How many places can be swapped? '))
table = row.maketrans('AB', 'BA')
s = ''
for i in range(swap):
s += row[i].translate(table)
row = s + row[swap:]
print(row)
关于python - 代码不适用于用户输入 A 或 B 并交换到所有 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56503641/