簡體   English   中英

嘗試基於Python中的條件語句設置變量

[英]Attempting to set variable based on conditional statement in Python

因此,今天實際上是我學習編程語言的第一天,因此我對Python還是很陌生。 我正在密歇根大學學習在線Python信息學課程,我們的第一個實際任務是創建一個簡單的總工資率計算器。

這很簡單,所以我決定擴展該程序可以計算凈工資和稅收的功能。 我遇到的麻煩是確定我如何基於一系列條件語句來動態地設置變量“ taxrate”的值(如果這是正確的話)。

我還沒有找到搜索Python網站和Stack Overflow的答案。 我認為我對編程的有限理解可能會限制我正確解釋所發現內容的能力。

只是尋求一點幫助:

碼:

#This program is intended to calculate the net pay of employees
#This first section includes a loop for mistakes and finds gross pay

while True:

hours = raw_input('How many hours do you work weekly?')
hours1 = float(hours)
rate = raw_input('What is your hourly rate of pay?')
rate1 = float(rate)
grosspay = hours1 * rate1
taxstatus = raw_input('Do you pay taxes?')


#This secdtion is establishing the tax bracket the user falls into
taxbracket = taxrate
if grosspay <= 1000:
    taxrate = 0.90
if grosspay > range(1000,1500):
    taxrate = 0.78
if grosspay >= 1501:
    taxrate = 0.63

# This section is intended to calculate pay after taxes
grosspay = hours1 * rate1
if taxstatus == 'yes':
    netpay = grosspay * taxrate
print'Your weekly pay after taxes is',netpay
if not taxstatus:
    print grosspay

當我在PyCharm中運行它時,它告訴我尚未定義“ taxrate” 我最終希望程序根據用戶的“總收入”來設置“稅率” 我想做的事可能嗎? 我以為是這樣,而我只是不知道該怎么做。

非常感謝您的幫助 ,以防萬一有人想知道循環是什么,我需要在程序的這一部分完成后進行用戶錯誤檢查。

if grosspay > range(1000, 1500)您的邏輯就會有點懷疑。 比一系列數字“更大”意味着什么? 我的猜測是,您輸入的總grosspay實際上在[1000, 1500) grosspay [1000, 1500)范圍內,因此它在您的代碼中遇到了此邏輯錯誤,無法將其分配給任何東西。

檢查數字是否在范圍內的通常方法是使用in運算符。

if some_num in range(1, 10):
    print("some_num is 1, 2, 3, 4, 5, 6, 7, 8, or 9")

但是,您會注意到some_num 必須包含在整數范圍[1, 9]中才能觸發。 如果some_num7.5 ,這將失敗。 這是令人難以置信的可能在工資總額的情況。 某人的薪水達到正好相等的美元金額的機會是什么?

相反,您可以做的是:

if grosspay <= 1000:
    taxrate = 0.90
elif 1000 < grosspay <= 1500:
    taxrate = 0.78
elif 1500 < grosspay:
    taxrage = 0.63

使用elif代替一系列的if s會使代碼效率更高一些,因為按定義, if/elif/else是一個互斥的塊。 換一種說法:

a = 1
b = 2

if a == 1:
    print("This gets done!")
if b == 2:
    print("This gets done!")

if a == 1:
    print("This gets done!")
elif b == 2:
    print("BUT THIS DOESN'T!")
else:
    print("(this doesn't either...)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM