我如何在一行代码中打印多个变量?

问题描述 投票:0回答:2
!/usr/bin/env python3

import random
import socket
import time
import sys
import os

print ('Ping Of Death')
os.system("clear")
print

ip_death = input("ip:")
packetsize = input("size:")
print (ip_death)

os.system("ping ip_death, -s packetsize ")

我得到的输出是

ping: ip_death,: Name or service not known

我知道变量的定义是因为我已经测试过print (ip_death),并且总是随输入一起出现。

我是python的新手,只是想知道如何在一个命令中运行这两个变量。如果不知道我要运行Ping example.com -s "size of packet"

python
2个回答
1
投票

您需要格式化字符串:

os.system("ping {}, -s {}".format(ip_death, packet_size))

您还可以通过在执行命令之前打印命令来验证您在做正确的事情:

command = "ping {}, -s {}".format(ip_death, packet_size)
print(command) # see that its what you wanted to execute
os.system(command)

目前,您刚刚将名称烘焙到字符串中。 Python不能自动地知道应该格式化和不应该格式化。

也-黑帽黑客行为很糟糕<3


1
投票
os.system(f"ping {ip_death}, -s {packetsize} ")

您可以使用f-strings将变量直接插入字符串。 f-stringsf"{variable}"定义>

注意:

os.system(f"ping {ip_death}, -s {packetsize} ")

仍然会失败,逗号将在cmd中引发错误,

Ping请求找不到主机192.168.0.1 ,。请检查名称,然后重试。

您需要删除逗号才能使其起作用;

os.system(f"ping {ip_death} -s {packetsize} ")

ping 192.168.0.1 -s 1

使用32个字节的数据对192.168.0.1进行Ping:

从192.168.0.1答复:字节= 32时间<1ms TTL = 255

时间戳:192.168.0.1:4742664

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