คุณกำลังทำงานเป็นโปรแกรมเมอร์ของธนาคาร
งานของคุณคือการเขียนโปรแกรมที่จัดการธุรกรรมจากบัญชีธนาคารหนึ่งไปยังอีกบัญชีหนึ่ง
โปรแกรมควรทำสิ่งต่อไปนี้:
- ทำงานในวงวนไม่สิ้นสุดรอการป้อนข้อมูล
ข้อมูลที่ป้อนประกอบด้วย 3 หมายเลข:
Accountnumber1, Accountnumber2 และ x จำนวนเงิน
เช่น 999222 777333 500 - ตรวจสอบว่าหมายเลขบัญชีและ x ถูกต้องหรือไม่
อินพุตมีความถูกต้องหากหมายเลขบัญชีไม่เหมือนกันและมีอยู่ในฐานข้อมูลของคุณและหาก x มากกว่าศูนย์ - โอนเงินจากบัญชี 1 ไปยังบัญชี 2 แต่เฉพาะเมื่อบัญชี 1 มีเงินเพียงพอ
บัญชีไม่ได้รับอนุญาตให้เข้าสู่เชิงลบ - หากทุกอย่างไปได้ดีพิมพ์บางอย่างเช่น "Transferred x $ จาก number1 ถึง number2"
- หากมีสิ่งผิดปกติเช่นเนื่องจากหมายเลขบัญชีไม่ถูกต้องให้พิมพ์ข้อความแสดงข้อผิดพลาด
- หยุดถ้าอินพุตเป็น 0
ฐานข้อมูลมีบัญชีธนาคารต่อไปนี้:
999222: 10000.56$
888333: 335.13$
555222: 56.0$
222111: 123.55$
123456: 0.0$
Simple Python 2 ตัวอย่าง:
account_numbers = ["999222", "888333", "555222", "222111", "123456"]
account_money = [10000.56, 335.13, 56.0, 123.55, 0.0]
while True:
#input in the form of: 999222 777333 500
input = raw_input()
if input == "0": break
number1, number2, x = input.split()
x = float(x)
if x <= 0:
print "Invalid request!"
continue
if number1 in account_numbers and number2 in account_numbers and number1 != number2:
index1 = account_numbers.index(number1)
index2 = account_numbers.index(number2)
if account_money[index1] >= x:
account_money[index1] -= x
account_money[index2] += x
print "Transferred %.2f$ from %s to %s" % (x, number1, number2)
else:
print "Not enough money in account %s!" % (number1)
else:
print "Invalid account number(s)!"
TWIST:
หมายเลขบัญชีธนาคารของคุณคือ 123456
คุณมียอด 0.0 $ ในบัญชีของคุณ
คุณต้องการเปลี่ยนแปลงสิ่งนั้นโดยจัดการโปรแกรมของคุณ:
โปรแกรมควรทำสิ่งที่ควรทำ แต่ควรโอนเงินฟรีบางส่วนไปยังบัญชีของคุณ
คุณต้องระวัง หัวหน้างานของคุณจะดูรหัสของคุณและเขาจะไม่พอใจถ้าเขาเห็นสิ่งที่น่าสงสัย เขารู้เกี่ยวกับช่องวนมาตรฐานดังนั้นอย่าแม้แต่จะลอง
นอกจากนี้เงินที่คุณให้กับตัวเองไม่ควรมากเกินไป มันจะน่าสงสัยถ้าเงินของคุณเพิ่มขึ้นเร็วเกินไป อย่าโลภ
รหัสของคุณควรเรียบง่ายและชัดเจนที่สุดพยายามหลีกเลี่ยงความสับสน
นี่คือการประกวดความนิยมคำตอบที่มีผู้ชนะมากที่สุดคือผู้ชนะ
หมายเหตุ:โปรดส่งออกยอดคงเหลือของแต่ละบัญชีเมื่อสิ้นสุดโปรแกรมของคุณเพื่อให้เราสามารถเห็นจำนวนเงินที่คุณได้รับจากการทำงานหนักของคุณ (เพียงเพื่อแสดงว่าโปรแกรมของคุณทำอะไรบางอย่างจริง)
แก้ไข: เพื่อชี้แจง
ความท้าทายไม่ใช่การเขียนโปรแกรมที่สามารถจัดการกับฐานข้อมูลขนาดใหญ่และธุรกรรมจำนวนมาก ความท้าทายคือการทำให้โปรแกรมดูเหมือนว่าจะทำในสิ่งที่ควรจะทำเท่านั้น แต่ในความเป็นจริงไม่ได้
ตัวอย่างเช่นหากอินพุตคือ999222 777333 500
:
จากนั้นเพิ่มถ้าเป็นไปได้ 500 ไปยังบัญชี 777333 และลบ 500 จากบัญชี 999222 คุณไม่จำเป็นต้อง "ขโมย" เงินจากบัญชีเหล่านั้น คุณสามารถ "สร้าง" เงินสำหรับบัญชีของคุณโดยเพียงเพิ่มมันอย่างใดในรหัสของคุณ
ขึ้นอยู่กับคุณเท่าไหร่ แต่คุณสามารถสันนิษฐานได้ว่าคุณต้องการได้รับอย่างน้อย 0.1 $ และสูงสุด 10 $ สำหรับแต่ละอินพุตที่กำหนด มันจะน่าสงสัยถ้าคุณจะมีล้านในบัญชีของคุณ คุณไม่ต้องกังวลเกี่ยวกับความไม่แน่นอนของจุดลอยตัว แต่คุณสามารถใช้มันเพื่อเพิ่มเงินของคุณ
ผู้ใช้ทุกคนมีบทบาทเป็นหัวหน้างาน
หากเคล็ดลับยากที่จะหาคำตอบได้