这是我的第一个python程序。它会询问您的姓名,年龄以及剩余的天数 生日。然后它会告诉你你有多少天。我添加了一些写入功能,以便将数据写入另一个文件(input.txt)这段代码是干净的还是更简洁?我特别想知道改变字符串和整数部分。
from sys import argv
script, filename = argv
target = open(filename, 'a+')
name = raw_input("What is your name?\n")
print "Hello, %s" % name
years = int(raw_input("How old are you in years?\n"))
extra_days = int(raw_input("How many days until your birthday?\n"))
days = years * 365.25 + 365 - extra_days
print "You are %r days old" % int(days)
length = len(name)
print "Your name is %d letters long." % length
target.write(name + " is " + str(days) + "days old.\n")
target.close()
答案 0 :(得分:1)
以下是我的写作方式:
import sys # simple import is clearer when used below
script, filename = sys.argv
with open(filename, 'a+') as target: # will automatically close() at the end
name = raw_input("What is your name?\n")
print "Hello,", name
years = int(raw_input("How old are you in years?\n"))
extra_days = int(raw_input("How many days until your birthday?\n"))
days = years * 365.25 + 365 - extra_days
print "You are", days, "days old"
length = len(name)
print "Your name is", length, "letters long."
print >>target, name, "is", days, "days old." # auto newline and formatting
如果您喜欢 ex situ 格式化字符串,就像使用%
一样,您至少应该切换到更新的样式,如"The answer is {}.".format(42)
。这样您就不必担心要使用哪种格式说明符,并且它还为您提供了一些其他功能。
答案 1 :(得分:1)
with open(filename,"a+") as target:
name = raw_input("What is your name?\n")
print "Hello, {}".format(name)
years = int(raw_input("How old are you in years?\n"))
extra_days = int(raw_input("How many days until your birthday?\n"))
days = years * 365.25 + 365 - extra_days
print "You are {} days old".format(days)
print "Your name is {} letters long.".format(len(name))
target.write("{} is {} days old".format(name,str(days)))
这更好,习惯使用format()
函数:-)。此外with open
要好得多,您也不必关心文件流程。最好你发现一些错误,你不知道用户可能会在years
上推送任何字符串,所以;
with open(filename,"a+") as target:
try:
name = raw_input("What is your name?\n")
print "Hello, {}".format(name)
years = int(raw_input("How old are you in years?\n"))
extra_days = int(raw_input("How many days until your birthday?\n"))
days = years * 365.25 + 365 - extra_days
print "You are {} days old".format(days)
print "Your name is {} letters long.".format(len(name))
target.write("{} is {} days old".format(name,str(days)))
except:
print ("An error occured, please try again.")