Python初学者求助:逐字打印后接收输入出现None问题
问题解决:输入提示符后出现None的原因及修复
问题原因
你的delay_print函数没有返回值,Python中无return语句的函数默认返回None。你把delay_print的调用结果作为input()的参数,input()会将该参数(即None)追加到提示文本后,因此出现Choose a colour(Red/Black):None的结果。
修复代码
无需将delay_print作为input()的参数,先调用delay_print输出提示,再单独调用input()即可:
import sys import time def delay_print(s): for c in s: sys.stdout.write(c) sys.stdout.flush() time.sleep(0.01) delay_print("Choose a colour(Red/Black):") Colour = input()
可选优化
若想让delay_print能直接作为input的提示使用,可让它返回传入的字符串:
import sys import time def delay_print(s): for c in s: sys.stdout.write(c) sys.stdout.flush() time.sleep(0.01) return s # 添加返回语句 Colour = input(delay_print("Choose a colour(Red/Black):"))
这样调用时,delay_print会先逐字输出文本,再返回原字符串作为input的提示,不会再出现None。
内容的提问来源于stack exchange,提问作者Mayur Krishna Narah
相关产品推荐
相关产品推荐

