Python3如何使用for循环打印动态拼接名称对应的变量实际值
问题原因
你当前代码里的listofurl = "ip" + str(i)只是生成了"ip1"、"ip2"这类字符串字面量,并没有读取对应变量中存储的实际IP值,所以输出结果会是字符串拼接后的内容而非你输入的IP。
推荐修改方案(符合Python最佳实践)
建议直接把输入的IP存入列表,既可以简化前面重复的输入逻辑,也能直接循环遍历列表拿到IP值,完整修改后的代码如下:
def hostFile(): hostConf = projdateprojname[9:] # 定义IP输入对应的提示语 ip_prompts = [ "\n\tEnter legacy host IP", "\n\tEnter legacy guest IP", "\n\tEnter legacy host IP", "\n\tEnter legacy guest IP" ] # 循环输入并存入列表 ip_list = [] for prompt_text in ip_prompts: print(prompt_text) ip = input(prompt) ip_list.append(ip) print(f"\n[{hostConf}-1]") for ip in ip_list: print(ip) # 循环打印带前缀的URL for ip in ip_list: print(f"https://{ip}")
临时兼容方案(不改动原有变量定义)
如果你不想修改前面ip1~ip4的变量定义,可以用locals()内置函数读取当前作用域的变量值,仅修改最后一段循环代码即可:
for i in range(1, 5): # 读取对应变量名的实际值 ip_val = locals()[f"ip{i}"] print(f"https://{ip_val}")
内容的提问来源于stack exchange,提问作者Tash
相关产品推荐
相关产品推荐

