Python 不是加拿大的国家
下面是我用python编写的代码。如果该国不是加拿大,我该怎么做?然后让它打印不含税的总价?现在,如果我把美国放进去,它会给我一个合适的价格,但它也会给我其他省份的价格Python 不是加拿大的国家,python,if-statement,Python,If Statement,下面是我用python编写的代码。如果该国不是加拿大,我该怎么做?然后让它打印不含税的总价?现在,如果我把美国放进去,它会给我一个合适的价格,但它也会给我其他省份的价格 country = raw_input('What country are you from? ').lower() if country == 'canada': total_price = int(raw_input('What was your total price? ')) province = raw
country = raw_input('What country are you from? ').lower()
if country == 'canada':
total_price = int(raw_input('What was your total price? '))
province = raw_input('What province are you from? ').lower()
elif country != 'canada':
total_price = int(raw_input('What was your total price? '))
if province == 'alberta':
total_alberta = (total_price * .00005) + total_price
print 'Your total price is ' + str(total_alberta)
if province == 'ontario' or province == 'new brunswick'\
or province == 'nova scotia':
total_onn = (total_price * .0013) + total_price
print 'Your total price is ' + str(total_onn)
if country == 'canada' and province != 'ontario' and province != 'new brunswick' and province != 'nova scotia' and province != 'alberta':
total_else = ((total_price * .0006) + (total_price * .0005)) \
+ total_price
print 'Your total price is ' + str(total_else)
else:
print 'Your total price is ' + str(total_price)
如果出现以下情况,请将代码放在第一位:
country = raw_input('What country are you from? ').lower()
if country == 'canada':
total_price = int(raw_input('What was your total price? '))
province = raw_input('What province are you from? ').lower()
if province == 'alberta':
total_alberta = (total_price * .00005) + total_price
print 'Your total price is ' + str(total_alberta)
elif province == 'ontario' or province == 'new brunswick'\
or province == 'nova scotia':
total_onn = (total_price * .0013) + total_price
print 'Your total price is ' + str(total_onn)
else:
total_else = ((total_price * .0006) + (total_price * .0005)) \
+ total_price
print 'Your total price is ' + str(total_else)
else:
total_price = int(raw_input('What was your total price? '))
print 'Your total price is ' + str(total_price)
将省逻辑嵌套到if country==canada中 您的布尔逻辑在许多情况下也是多余的,可以像我上面所做的那样进行修剪将您的if省状态放入if加拿大,然后放入如果国家不是加拿大,它将跳出整个if状态
if country =='canada':
if province =='ontario':
.....
else //the not canada statment
干净的pythonic版本-您的逻辑和ifs嵌套不好:
base_canada_tax = 0.13
provinces = {'alberta': 0.05, 'ontario': base_canada_tax, 'new brunswick': base_canada_tax, 'nova scotia': base_canada_tax}
country = raw_input('What country are you from? ').lower()
total_price = int(raw_input('What was your total price? '))
if country == 'canada':
province_in = raw_input('What province are you from? ').lower()
total_price *= 1 + provinces.get(province_in, base_canada_tax)
print 'Your total price is {0}'.format(total_price)
这是基于@Incognos的答案,并更正了逻辑和数字:
provinces = {'alberta': 1.05, 'ontario': 1.13,
'new brunswick': 1.13, 'nova scotia': 1.13} # excess alberta removed
base_canada_tax = 1.113 # 6% and 5% together as per question's (corrected) code
country = raw_input('What country are you from? ').lower()
total_price = float(raw_input('What was your total price? ')) # float
if country == 'canada':
province = raw_input('What province are you from? ').lower()
total_price *= provinces.get(province, base_canada_tax)
print 'Your total price is', total_price
仅供参考,如果a在‘a’、‘b’、‘c’中,那么说a比说a=='a'或a=='b'或a=='c'等更容易。你确定这就是你遇到的问题吗?如果你进入一个“美国”的国家,它应该在到达If省后立即崩溃。。。因为省没有定义。如果你稍微重构一下你的代码会更好。现在有点乱。您可以将一些省份分组,检查该集合中每个原始输入的成员资格,然后做出相应的决定。此外,还应定义一组所有省份,以防有人随意放置某些内容。然后,如果您需要将其扩展到其他国家,则每个集合都可以是字典的一项,其键是国家字符串。谢谢您的反馈。我是新手,所以我还在学习。这绝对有助于你永远无法进入内心世界,因为伊里夫省阿尔伯塔省总是成功的。如果第一个省=='alberta'抓住了thatHa!是的,我刚刚看到了。很抱歉谢谢你的接球!又短又好。非常感谢。IMHO这是最好的,因为您将所有ifs替换为[province in[0]中的tableif province in[province in province]:total_price*=province[province]-否则:total_price*=1.0013会检查字符“a”、“o”、“n”、“n”和“a”,所以我认为它不会起作用。您可以用total_price*=provinces.getprovinces,1.0013替换这四行。此外,我怀疑0.13%是正确的税率。你也有两次阿尔伯塔省,有不同的价值。更好,但税收价值仍然很小,例如,在阿尔伯塔省花费的每一美元的1/200便士。LOL-我希望我们可以通过编程确定税收价值,但这些都是不符合逻辑的。。。这些在代码段中很容易修改,任何其他方式都需要更多的工作:-顺便说一句,Python用于注释,而不是//。我更熟悉php和java,甚至有一段时间没有看到Python代码了。好的,这也很有意义。第一个如果是加拿大,那么其他任何国家。。。谢谢
provinces = {'alberta': 1.05, 'ontario': 1.13,
'new brunswick': 1.13, 'nova scotia': 1.13} # excess alberta removed
base_canada_tax = 1.113 # 6% and 5% together as per question's (corrected) code
country = raw_input('What country are you from? ').lower()
total_price = float(raw_input('What was your total price? ')) # float
if country == 'canada':
province = raw_input('What province are you from? ').lower()
total_price *= provinces.get(province, base_canada_tax)
print 'Your total price is', total_price