Python 替换字符串中以3和7结尾的数字

Python 替换字符串中以3和7结尾的数字,python,Python,编写一个程序,生成并打印包含自然数(从1开始)的n个元素(由用户通知)的列表,并将3的倍数替换为“ping”,将7的倍数替换为“pong”,将3和7的倍数替换为“ping-pong” 这是代码 result = [] number = eval(input("Enter a whole number: ")) for index in range(number): if index % 7 == 0 and index % 3 == 0: result.append("p

编写一个程序,生成并打印包含自然数(从1开始)的n个元素(由用户通知)的列表,并将3的倍数替换为“ping”,将7的倍数替换为“pong”,将3和7的倍数替换为“ping-pong”

这是代码

result = []
number = eval(input("Enter a whole number: "))
for index in range(number):
    if index % 7 == 0 and index % 3 == 0:
        result.append("ping-pong")
    elif index % 3 == 0:
        result.append("ping")
    elif index % 7 == 0:
        result.append("pong")
    else:
        result.append(index)
print(result) == 0

现在还将以3结尾的数字替换为“PING”,以7结尾的数字替换为“PONG”。我不知道该怎么做。

我试图让您的代码实现您想要的功能,同时对其进行尽可能少的修改

  • 不要使用
    eval
    。曾经坏,坏,坏
    eval
    。要将字符串转换为int,请使用
    int()
  • 您的代码从0开始,但有人要求它从1开始,我 改变了射程
  • 为了知道最后一个数字,我根据@Renuka Deshmukh的巧妙注释计算了模10的数字。其他不太聪明的解决方案可能是检查作为字符串铸造的数字的结尾,例如使用
    str(index).endswith(“7”)
    str(index)[-1]==“7”
  • 您的
    打印(结果)==0
    试图做什么?我删除了
    ==0
以下是生成的代码:

result = []
number = int(input("Enter a whole number: "))
for index in range(1,number+1):
    if index % 7 == 0 and index % 3 == 0:
        result.append("ping-pong")
    elif index % 3 == 0 or index % 10 == 3:
        result.append("ping")
    elif index % 7 == 0 or index % 10 == 7:
        result.append("pong")
    else:
        result.append(index)
print(result)

您确实不应该使用
eval
解析为整数;改为使用
int
函数(
int(输入('输入一个整数:'))
)使用
eval
令人困惑,为什么要准确使用?@SSj.Luffy强制将数字计算为
int
。然而,永远不应该这样做<应始终避免使用代码>评估。只需转换为
int
而不是=>
int(input())
将输入转换为字符串并获取最后一个索引,根据7和3进行测试。为什么不在生成输出时打印输出,而不是尝试附加到结果中?与其将数字转换为字符串,不如尝试索引%10==3和索引%10==7。不需要转换为字符串。完全正确。我太习惯暴力了,我甚至连基础数学都不会。